We have always used semantic versioning. IOW all new major versions (first of the three version numbers) are incompatible in some way (usually requires a workaround), new minor versions are backwards compatible (you can upgrade to higher versions safely), and patch versions are backwards and forwards compatible (you can both upgrade and downgrade safely).
Of course, that’s only theory, and the longer jump you make, the more likely it is that it has not been tested extensively. Our recommendation is to try to stay maximum a couple of minor versions behind.