The revision property of a model is a free form field to allow you to put a version of the code without any constraints or impact on the actual code, whereas the version is the upgrade schema version that has a lot of constraints and must match the latest Main.upgrade, be unique, and can be referenced by others in base meta, mix-ins, etc.
The revision can be used for designating builds, branches, releases, etc. It can be updated by the CI server, by the dev ops team, devs, etc.
NexJ uses it for build identification for many client deployments and release versions for product delivery.