Reach for a queue when work is slow, spiky, or must survive failure. Sending email, generating PDFs, charging cards, resizing images, and syncing data to another system are classic cases. A queue lets you absorb a traffic spike by letting the backlog grow instead of crashing, and lets you scale producers and consumers independently.
The cost is added latency and complexity. A request that goes through a queue is no longer instant, so a message queue is the wrong tool when you need an answer in the same request, like a database lookup feeding a page render. You also take on operational work: monitoring queue depth, tuning visibility timeouts, handling duplicate delivery, and watching the dead letter queue.
A point-to-point message queue is also different from publish subscribe. In a queue each message is consumed by one worker, which is right for task distribution. If many independent services each need a copy of every event, you want a pub sub topic or a log like Kafka instead. Many systems use both.