I have gone through many sample codes, almost all of them use only one write in a pair of begin and end transmissions, if two writes are needed, they repeat the code as below
Yes but you can't write more than 32 bytes at a time due to the hard coded buffer sizes in the Wire library.
Nothing gets transferred until you call endTransmission() the bytes are buffered up. The buffer size in Wire is 32 bytes that is why you can't send more than 32 bytes at a time.
Transferring multiple data bytes in a single i2c message block will be much faster than sending each byte separately as you avoid the additional I2C start, address and end overhead for the subsequent bytes.