Messaging involves sending asynchronous messages between isolated applications or components, usually through a broker. It provides benefits like improved scalability, robustness through message acknowledgments, and easier system maintenance through decoupling of components. Common uses of messaging include processing tasks asynchronously, integrating legacy systems, and remote procedure calls. Popular messaging protocols include AMQP, STOMP, JMS, and protocols like RabbitMQ and ZeroMQ are often used.