Versioning is the practice of associating some form of identifier to a temporal snapshot of a system. In software this is often seen as a version number.
There are various approaches like Semantic Versioning and calendar versioning that provide additional information in the version information beyond just an arbitrary reference to a snapshot of the state of the project at that time. This additional information is exceedingly useful when you are consuming or interacting with software and hardware projects because it allows you to make decisions based on the version beyond just comparing an exact version with another version.
We make extensive use of Semantic Versioning for the software artifacts that we create as following this discipline provides substantial benefits both internally and externally.