The Master is to make sure that messages don't get sent at the same time.
It is possible to have two Slaves, when for example always one Slave starts and the other Slave responds.
- Yes
- Not the bus, but the Arduino gets clogged up.
- No, you may keep the I2C communication running.
4,5) Perhaps only wrong data without warning. Perhaps the Wire library might detect it (if you are lucky). Perhaps the software will halt somewhere. Some I2C devices get so confused that they might stop the I2C bus forever. Solar flares. Disturbance in the space time continuum. Aliens attack. That kind of things, you don't want that
A common way is to add a "interrupt" signal from each Slave to the Master. Then the Master has to read the digital inputs of all the "interrupt" signals and when activated request data from that Slave.
It is only buttons ? Then polling is no problem. Does Slave A do the debouncing as well ? Perhaps polling that Slave 10 times per second is enough, maybe a little more is better, for example 20 times per second. Polling 100 times per second is possible, but that is not needed for buttons.
In the Master you can use a software timer with millis() at a rate of 20 Hz (50 ms) to poll Slave A.