On a personal note, I save new instances of my project file as I'm developing it during the day.
I keep those files because if I need to revert back to a previous working version (due to me messing it up, or at times, a Construct update introducing breaking changes) I have them at hand.
I also keep them for maintenance and additions (I have some modifications I might need to do on a project that was released more than a year ago for example).
I do a 4 level version X.Y.Z.a.
When saving a project version on my local hard drive, 'a' might be a letter from a to z, allowing me for, at least, 26 instances of the same version in the day (focusing on the file's name here).
At times, I add a new feature in, or develop some stuff, make a backup save and change the 'a' accordingly.
ie: 0.1.12.g
This doesn't work for export on mobile though, where a number is required instead as version number.
So when I'm getting nearer to making export to mobile (for tests), I switch this to using numbers instead.
ie: 1.0.2.9
Otherwise, the X.Y.Z are pretty much how you assume. X is the main version number, being 0 as long as I haven't officially released yet. Y is "minor" revisions. Z is a number that increases more often.