One common use we have for Magento message queues is related to ERP integrations. For example: When a user places an order we want to transmit that data to a remote system. This transmission process over the network takes time that we don't want the user waiting.
Using a message queue allows us to decouple the ERP integration process from the customer order process. When Magento fires the sales_order_place_after event we just pass the order id (message) into the order export message queue (publisher) and let the order complete normally.
Now the message broker (RabbitMQ) will queue the order ids (messages) waiting for export until another process (consumer) to take an order id (message) and export that order. With the consumer being a background process there is more flexibility in running time and error handling.
It really took me playing with RabbitMQ to connect all the dots but hopefully, this is helpful.