Read Arduino pin from another Arduino
You're definitely right about the ground.  


not this specifically, but it's just two chips talking to each other so it shouldn't be terribly complicated.  I have managed to get a couple of micros talking to each other over I2C, SPI, and RS232 on different occasions, but never just to read IO pins.  
not if you're careful


One question, though: why do you want to do this?  There are devices available called port expanders.  The basic idea is that you talk to them over I2C or SPI and they provide access to several IO pins (usually 8 or 16) and possibly some additional interrupt-on-change functionality.