As I recall the "payload" maximum for an individual MSMQ Message is something like 2MB of data.
MSMQ offers advantages over a simple "pipe" as well. A machine sending data to an MSMQ Queue on another machine doesn't even need to have a continuous connection to the server machine. The local machine will hold the data until a path does exist, and then just pump it over the link.
You can also make MSMQ Queues transactional, insuring once and only once delivery.
MSMQ Triggers even offer a mechanism whereby server applications get fired up automatically to process queued messages as they arrive.
All of this comes with only fairly simple application code. MSMQ Queued Components offers yet another way to use MSMQ instead of explicitly interacting with the ActiveX classes wrapping the MSMQ API.
MSMQ can get to be a big topic on its own, involving Active Directory domains, relay servers, journaling, and such. It is also possible to use it in simpler scenarios though, including Workgroup networks or even cross-domain networking.
I'd characterize it more as "email for applications" but it goes much further than that.
If you have installed the VB6 Samples, you'll find a starter MSMQ "workflow" application there.
Here is a brief introduction:
Using Visual Basic to Integrate MSMQ into Your Distributed Applications.
The MSDN Library has reference material on the subject.