- MTProto: once you've figured out the docs written by Nikolay Durov (no small feat!), you realize that chat rooms come in two flavors. Also the "TL" binary serialization is properly weird sometimes. There's a protocol message acknowledgement mechanism on top of TCP. Sometimes you receive "updates" (events) out of the blue, sometimes you have to ask for them, sometimes API calls return them.
- Whatever VK does: it's not an "instant messaging protocol", but instead it's a group of API methods. You receive events in real time via long polling, and you do everything else through the API.