yo estoy casi de acuerdo con ese esquema con un par de excepciones, no usaría las versiones mayores para arreglos sino solo para nuevas características e incluiría nuevas características tanto en las versiones mayores como las menores (1 y 1.1) diferenciandolas solo por el grado de cambio de la característica.
por ejemplo: si escribo un cliente de correo y quiero implementar el reenvío de correos, el reenvío de correos en si lo escribiría para una versión mayor (1, 2, 3, .. etc) si ya quiero tener un botón de reenviar a todos y otro de reenviar al autor, o reenviar a xxxx, esa pequeña adición la haría para una versión menor (1.1, 1.2, … etc) la corrección de errores a esta característica la haría en versiones de mantenimiento (1.1.1, 1.1.2, etc).
Ahora bien tal vez lo mas importante es tener un roadmap del proyecto y tratar de relacionar las características en orden de importancia con un numero de versión, a medida que se desarrolle el roadmap se pueden ir haciendo versiones menores y de mantenimiento según se requiera.