MSMQ 2.0 was available with Windows 2000 & runs only on Windows 2000 platform.
MSMQ 3.0 comes with Windows 2003 and Windows XP.
So... which MSMQ version should we use then? It seems that we have to build different versions of our application that use different versions of the MSMQ library to be compatible in both XP and Win2K environments. And how about mixed environments? If Win2K is on the server, and the client has XP?
EDIT: this reply from John Breakwell (MSFT)
Hi, the problem is not as bad as it seems. I regularly use test utilities on Windows 2008 that were written years ago. MSMQ should be backward-compatible - an application developed on MSMQ 2.0 should work fine on MSMQ 3.0. Doesn't mean you won't find any discrepancies, though, just like moving any Windows application to a newer platform. The usual practice of testing and recoding if necessary applies.
Note that here I am talking about compatibility with the application code. Compatibility between machines running different versions of MSMQ is much better. The format of the messages "on the wire" is the same across all versions (but see below) so you don't have to worry as long as you are sending the same type of messages.
Obviously you can't send a message over HTTP from a Windows XP client to a Windows 2000 server as the latter doesn't have that functionality. Standard MSMQ messages, though, should work between all versions.
There is one blemish on this with very large (~4MB) messages and that is discussed here.