UNOs - Master-Slave and HMC6352 dig compass all three over I2C

Doh! I had each ground separetely on the ground of the circuit I'm using. It works when I'm connecting the grounds together. Do you happen to know why this happens?
Whats the difference of having the grounds separetely from having them connected to each other?
I'm not using any pull-up resistors also. Should I ?