I want to know if there are any guidelines about when it's supposed to change the PCB's number (1.0 or 2.0) or it's revision (Rev A, Rev B).
I believe it's just with every other version, change the revision when there is a bug fix, change the decimal when you've made a minor change, change the first number when you've made major change. But there might be other guidelines as well!
This answer describes the same way as with Software versioning, with the only change that the revision number is changed into a letter. In software versioning, the version consists of a major, minor and revision number: 1.0.0 for example.
There are no guidelines. The important part is that you can distinguish between versions. Some people like to use various number, letters, suffixes, etc. This is really a bigger question than just electrical engineering. We have to work within the larger system of the company. Often such things are dictated by the inventory management, accounting, billing, and hierarchical build specification systems used by the company.
I gave up long ago trying to make "meaningful" part numbers or revision numbers. I have had to work with some systems that tried to distinguish between prototypes and released to production versions, and this stuff never went smoothly. Just to point out one obvious problem, how do you know the version you are currently designing the board for and have to write a part number on will be the version that ends up getting released until you have a chance to test it, well after some part number already got affixed to it?
What I do when nothing external dictates otherwise is to give each board a short name and a version number. The frammistan to combobulator interface board might be called FRCOM. Every version of this board would have a number, so the first prototype version would be FRCOM1. I usually put a somewhat more descriptive name of the board on the silkscreen layer along with the date of its design, then the internal tracking number (the FRCOMx) on the top copper layer in some obvious place. Whenever the board is changed, the FRCOMx number is incremented.
This same name is used on the schematics, so you always know he FRCOM3 schematic corresponds to the FRCOM3 board. This can all be quite different from user-visible model numbers, which are usually chosen later in the process anyway. Also, the same product from the user point of view may have a internal revision over time. The above board may be sold as part of the Wonder-9000 product, which over time might be updated from FRCOM3 to FRCOM4 boards.
Again, that is just one example of many possible schemes. The important part is to be able to identify revisions and to have the internal tracking documentation so that you can figure out what is what. No part numbering scheme can tell you all the various dimensions of what you want to know about each revision, so no matter what you do it will in the end be little more than a reference to the internal documentation.
The following are my recommendations:
Versions are for form, fit or function change.
Revision changes are for minor changes where the new or the old rev (PCB) are interchangeable.
Any version change in mfg is tracable, but revision change is not.
Most CMs follow above rules to manage the outgoing products, version changes for their inventory management tool is tracable but revision changes are not. So if you faced an issue in the field and asked them to pull the new/old rev they would face trouble finding it, but with a version change they wont.
Here is an example of how I do it:
class code- base-version revision
28-12345-01_01, version -01 revision _01
My inclination would be to say that two boards which have the same "part number" (referring to the board as an assembly) should have the same specifications with regard to the device in which they are installed (mounting holes and connectors should be in the same places, connectors should have the same pinouts, etc.) If later boards are unambiguously improved in some way which will be 100% substitutable for old ones, but not vice versa, it may be useful to have a "higher" suffix (e.g. if the old board was a "24601-1", have the new board be a "24601-2", etc.) If the board design is changed, but only in ways which should not affect users of the board (e.g. the orientation of some parts was changed to allow them to be wave-soldered without requiring a separate reflow step) such that old and new boards should be fully interchangeable, do not change the board number.
There are three pieces of information that the PCB should contain, usually on silkscreen: a) PCB Part number - this stays the same for all production runs, and is usually indexed into a master Bill of Materials (BOM). Different companies have different standards as to how they like to number these. For one company I work with, these always start with 8800, so a PCBA PN would be 8800-74
b) PCBA Part number - this is different, and there may be more than one PCBA part number that uses the same PCB. For example, we may omit some components, and not others. It's important to note that this is NOT guaranteed to be consistent with the PCB. In those cases the PCBA PN is usually on a label that gets affixed to the populated PCBA. For the board mentioned above, we had three PCBA PNs - 9200-74-01, 9200-74-02, and 9200-74-03.
c) Hardware revision. Some like to use an alphanumeric code (e.g. A0, A1, B0, B1, etc.) whereby the first letter is major revision, second letter is minor revision, with the assumption that all rev A PCBs are interchangeable, all rev B PCBs are interchangeable, etc. This is a bad idea - the preferred way to do it is through proper version control. I use a single letter revision (A, B, C, etc.) and make the manufacturer check with us as to what version can replace a previous version.