Wire.available() and Serial.available() : How do they differ?

My question is: In TWI protocol, the user knows when to read known number of data items and process them. In Serial Protocol, how does the user know how many data items to read from buffer before applying Serial.available() method in order to be sure that the buffer has accumulated data? Is this number (number of data items to be transferred) be set earlier on mutual agreement between UNO-2 and UNO-1 -- before the communication begins between UNO-2 and UNO-1?

To answer your direct question: Yes.

In both interface types the protocol used on them defines how many bytes to be transfered. On I2C this is enforced by the master (it clocks only that many spikes on SCL) while on UART it's simply a rule both sides should have agreed on.
The available() method of both interfaces (Serial and Wire) just returns the number of bytes in the reception buffer. Using the Wire object you get exactly the same value from the requestFrom() method, at least until you start reading out the buffer.