1. мессенджеры делают, используя асинхронную модель обработки запросов, почти для каждого языка есть фреймворки реализующие такую модель -> для языка java - это play framework (akka), для js - это node.js, для питона - это торнадо, и тд.
2. у разных приложений очевидно разная нагрузка, а также разные способы обработки данных. не оптимальные способы, даже при низкой нагрузке могут давать плохую производительность.