There is a major and very well known theory behind it.
It's called semantic versioning.
MAIN.
MINOR.
FIX
The first number is the main version, a change here will mean that something huge has changed and is probably not compatible to all features of a former main version.
The second number is an information about minor features.
So every time we, or a contributor, adds a feature, this number will increment.
This is the case quite often currently, because we want to offer best possible functionality.
The last number defines fixes and amendments.
Meaning it will change when we add bug-fixes or small amendments that are not new features.
All the theory behind it is well documented and can be read up here:
semver.org/