When the message is sent (or received), it is placed either to the end of message queue (if the message was posted), or after the last of the messages, placed to the queue with SendMessage* function (if the message was sent). Priorities let you change the place where the message is inserted to the queue. Message with higher priority is placed after the last message with equal or higher priority, but before messages with lower priorities. "IsSent" flag (ie. if the message was sent) automatically positions the message before all posted messages. If there are any sent messages in the queue, they are also arranged according to their priorities.
Priorities are useful when you want to send some message "out of band", ie. when there's a flow of data messages flow and you need to urgently send the control message. In this case control message is given higher priority when sending.
Another example would be a keep-alive message sent from time to time to control the server. Obviously, there's no sense to send such message if there are other, more important messages to be sent. So keep-alive message is given lower priority than regular messages.
Default value for priority is set to 0, and you can choose any range from -128 to 127.
By default, the receiving party takes priorities of the received messages into account. However this gives a possibility for some client to flood a server with empty or invalid requests. To avoid flooding the server, one can set MCBaseTransport.IgnoreIncomingPriorities property to true.