I want to have two Arduino's communicate over I2C, so I've been looking at the example files. It doesn't look to hard, but I'm wondering if the master can request the slave for specific data. Right now it looks like I just make a request of a specific slave and tell it how many bytes I want. Can I make a more specific request, for example, send me the temperature from sensor 1.
Also, do I need to worry about error checking of the data I get back, or does I2C take care of that for me?
Yes, it is possible.
In default mode, you have to make the master in write mode and the slave in read mode.
Then, you start the communication and have the master send a signal to the slave.
Right afterwards, you set the master to read mode and slave to write mode. The slave will then send the data/info back to the master.
When all that is done, you return to having the master in write mode and slave in read mode.
Sorry, but I don't have any example code of how to do this in Arduino. I only know that it is possible and I have done it in AVR programming. This system of reading and writing is usually used to set registers in all sorts of I2C chips, such as accelerometers, compasses, some wireless modules, etc.
As for error checking, I don't think there is much of a problem. The I2C is pretty reliable and you don't have to worry about errors or fragmented data.