1) Yes - https://store.mrobotics.io/mRo-JST-GH-I2C-Bus-Splitter-for-PixRacer-p/mro-jstgh-i2c-split-5-mr.htm
2) This definitely needs some improvement, but the best answer at the moment is to start with a similar driver as a template. If it's a driver for something common that already integrates with the system (gyro, accel, pressure, etc), then the only pattern you actually need to follow is to publish the correct uORB message.
a) These days PX4 itself almost exclusively consumes data from uORB, however most of the drivers are still accessible via IOCTL. This is how Ardupilot was using PX4 drivers.
b) Yes - you open() the device and can read/write, although I'd recommend going with uORB instead.
3) Yes I suppose, but I'm not sure I understand why. What's the full idea?
I'm personally pursuing a simplified driver framework that significantly reduces the required boilerplate, but it's not going to be ready short term.
@hamishwillee - FYI (interest in driver documentation)