Between two given tasks, A and B, message order is preserved. That is, if A sends ten messages to B using pvm_send(), B will download them in that same order. Note messages can be picked out of the middle of the receive queue in B, though, by causing pvm_recv() or pvm_nrecv() to select a particular message.
The order of arrival between direct messages (pvm_send()) and multicast messages (pvm_mcast() or pvm_bcast()) is not guaranteed. It stays consistent right now (version 3.3) because the same routing path is taken by each message. Note that the path is not the same (and ordering is not guaranteed) when using PvmRouteDirect: Sent messages go from task to task, while multicast messages are routed via the pvmds.