Как правильно нумеровать версии программы?
 Есть ли какие-то определенные правила?
Правила есть разные. Из популярного - уже упомянутый https://semver.org/lang/ru

Но semver, как правило, не очень подходит для приложений - он больше заточен для библиотек, чтобы из номера версии было понятно, совместимы две разные версии между собой или нет.

Самая простая система нумерации - просто с каждым новым релизом увеличивать номер версии на 1.
Ещё вариант, который по сути даже и не является номером - брать в качестве версии хэш коммита из git.

как правильно
Правильно будет определить, какую проблему ты хочешь решить при помощи особой системы нумерации.
Если у тебя нет каких-то особых задач типа "номер версии должен сообщать, когда была выпущена версия программы" или "из номера версии должно быть очевидно, совместима ли новая версия со старой", то лучше остановиться на варианте с увеличивающимся номером.
Вот был документик. Про семантическое версионирование https://semver.org/lang/ru/