Fijate que depende mucho de la filosofia del desarrollador, por lo general cada proyecto tiene sus propios "estandares" para definir numero de versiones.
Sin embargo, por lo general la gente sigue mas o menos esta dinamica:
[version].[sub-version].[fixes]
Version: Cambios mayores en el programa, un cambio de version puede indicar incluso una reescritura completa de codigo, o de las funciones principales, se puede decir que el mismo programa de dos versiones completamente diferentes, seran entre si dos programas diferentes.
Sub-version: Cambios menores en el programa, cuando un programa es de la misma version pero se van añadiendo nuevas funcionalidades o cosas por el estilo, se cambia el numero de sub-version, los cambios no son tan grandes como para decir que dos programas con subversiones diferentes son diferentes.
Fixes: Cuando se encuentra un error en el programa o algo, por lo general se arreglan los problemas y la nueva version cuenta con un numero nuevo de "arreglos". Los fixes no modifican en nada la funacionalidad o caracteristicas del programa, sino indican que se han corregido bugs o problemas en el sofware.