I thought that the version messages that are exchanged when establishing a connection between two nodes and the version field within them indicate what each node supports. Each version supports some new feature and then, depending on which versions are exchanged in these messages between the nodes, a smaller version of the protocol is used and each node knows what it can "ask" other nodes.
However, based on this answer and comment:
Protocol version 70014 simply means the
sendcmpct
command exists, not that compact blocks are actually supported.
...it seems to me that my assumptions are wrong.
Therefore, what is the purpose of the version field in the version message