ProtocolSupport exists to solve the age-old problem of "What do I do if my users refuse to update their client?" in the most effective way possible.
With ProtocolSupport, you may continue to update your server whilst allowing your users to continue using the Minecraft versions they prefer. As a result, everyone is happy - your server is up to date, and your users do not need to worry about updating.
ProtocolSupport is a protocol transformer. It hooks into the server's networking code, and waits for a connection. When a connection is made, ProtocolSupport figures out what version the client is using, and translates the packets from it to the version the server understands. Then, when the server attempts to send a packet to the client, it is translated back into the version the client understands.
Where blocks and items are present on the server but not on the client, they are replaced by something else. Most blocks are replaced by something of equal hardness, to avoid issues related to the timing of breaking blocks. If you'd like to change how things are remapped, see the ProtocolSupportStuff addon.