<major version>.<minor version>
For example the version number "2.1" means major version 2, minor version 1. (Generally the major version starts from 1 and the minor version from 0. A major version 0 is often used to denote an alpha or beta version that's not yet complete.)
The major version number usually indicates some kind of significant milestone in the development of the program, and is usually accompanied by significant improvements or changes. Sometimes it could mean a full (or significant) rewrite of the code base (even if outwardly there's little visible change). Regardless of what exactly is it that has changed, it's usually a very significant major change (either internal or externally visible).
Some projects keep the major version so significant that they hardly ever increment it, and reserve it for really huge milestones (such as rewriting the entire application from scratch or changing it so much that it's effectively a completely different application, even if its purpose remains the same.) The Linux kernel is a good example of this (which was only incremented to 3 recently, even though it has been under constant development for over 20 years.)
The minor version is usually incremented when new features and/or a significant amount of bug fixes are introduced. In many projects even relatively major new features or improvements only cause the minor version to be incremented.
Some projects use even further minor version numbers. A typical custom is to use a third number (so version numbers will look eg. like "2.5.1") which often denotes simple bug fixes or cosmetic changes, but generally no new or changed features. Some even use a fourth number (such as the abovementioned Linux kernel) for an even finer distinction between bugfixes/cosmetic changes and actual feature changes (so that such changes can be divided into minor and minor.)
Anyways, at the very least it's a good idea to use a two-numbered versioning scheme to indicate a clear difference between major and minor changes. This is very informative. When you see the major version number increase, you know that something really big has happened, while the minor version number just indicates some more minor changes.
The Firefox project used to use this kind of version numbering for almost a decade (with the major version slowly incrementing from 0 to 4 during that time). This was quite informative. When the major version increased, you knew that there would be some significant changes to the browser.
Then, for some strange reason, they threw that away. Now they are using the major version number for what almost every other project in existence uses the minor version number for, and they practically keep the minor version always at 0. They keep incrementing the major version number each month, just for some minor improvements and added features.
I do not understand the rationale behind this. The version numbering of Firefox has practically lost its meaning and is useless. It's not anymore possible to tell from the version number if one should expect really big or just minor cosmetic changes.
Moreover, if they ever make a really significant change or improvement to the browser, nobody will hardly notice because the version numbering has lost its meaning and it cannot be used to convey this information anymore. No more will you see headlines reading like "Firefox 3 released, major improvements." It will just be "so they released Firefox version 57, so what? What did they change? The color of the close tab button?"