How to provide version numbers to hardware schematics / PCBs?
We handle it the following way: Major.Minor.Revision

Major is changed, if there were changes to board dimensions or extensive changes to component placement or general functionality. Like re-designing a PCB for a different enclosure or adding a new connector.

Minor is changed, if there were any changes to component placement, routing, copper fills etc. Essentially any change, that potentially changes electrical characteristics.

Revision represents the revision number from our version control system (Subversion) 
and thus increases with every committed change. This could be a small change to the silkscreen or changing component types/values due to better availability. Versions with a revision changes only can be processed by the assembly house without any adjustments (paste mask compatible, same dimensions, same pick&amp;place).

Version progression: If Major is incremented, Minor resets to 0. Revisions always increments and unambiguously identifies a specific version.
Example: 1.0.0 -> 1.0.1 -> 1.0.2 -> 1.1.3 -> 2.0.4

Relevance to part list: Our BOM contains a reference to the Major.Minor version of the compatible target PCB. The revision is not relevant with respect to the PCB, since there  were no relevant physical changes. Thus, 1.2.10 can be assembled just like 1.2.15. The BOM itself has a revision number, that is equal or higher than the target PCB version.
Example: A BOM titled "BOM 1.2.18 - Target PCB 1.2" can be used to assemble boards of version 1.2.10 as well as 1.2.15.