Very useful in a distributed systems like environment. Imagine process A needs to send some data to B, but either could reside anywhere in the cluster. Each just has to register with the broker and it does the dirty work of figuring out how to route messages.
It's handy when certain actions that your system performs is really slow compared to everything else. You send a message to a queue that will result in the action eventually occurring, and then you go on with your business. One example would be building a full-text index of a large file (or group of files). You don't need to hold up your user while that slow process goes, so you send it to a queue and let worker processes do their thing. If the process is not only slow, but also compute-intensive, these worker processes can be on a different machine/farm of machines.
If you've never needed asynchronous systems and messaging, perhaps you should consider yourself lucky.
Similar small scale problems of mine were easy to solve with Python Queue's. Maybe I am lucky those problems weren't at a scale azim and gthank explained though. oh the goose-bump :)