Here are some answers from my recent experiences
I needed a camera driver. The camera driver uses an I2C interface, and camera interface. Before any camera functions are done the first thing is to identify the device. ( camera). This is done via the i2c.
On booting when the kernel is loaded it will search for drivers you have installed/created. ie. camera_driver. It will register the driver and 'probe' automatically. During the __init the probing of the device is done, at this time you can reset/send commands via the i2c.
See /linux/drivers/media/video/monahans/mt9d111_hw.c for an example.
it's not that apparent, so you'll have to follow the code through.
also read /linux/documentation/driver-model.txt. See
http://lwn.net/Kernel/LDD3/
So the short answer to your question is on kernel boot-up the drivers are loaded, and devices are initialized.