А возможно ли внести изменения в прошлом так, чтобы они перешли в каждого потомка(коммиты, ветки) и в последнем сейве проявились последствия?
Можно не "внести изменения в прошлом", а как вы и сказали, создать "параллельную реальность". Все команды Git, про которые мы говорим, что они "редактируют историю" на самом деле ничего не редактируют в истории НИКОГДА, а лишь создают НОВУЮ историю ("параллельную реальность") на основе существующей. Например, команда rebase именно так и делает. Существуют инструменты, которые позволяют выполнять гораздо более сложные операции с историей - менять содержимое blob и tree объектов, менять дату/почту в коммитах и вообще всё что угодно, например CLI-инструмент и неплохая Python-библиотека в одном лице -
git-filter-repo.
Если нет, то как делается чтобы прога, имеющая издания с разными степенями урезанности (nonlimit, premium, home, ...) могла эволюционировать лишь только главным изданием, и не приходилось каждый раз всё заново урезать вручную?
Офигенно неожиданное продолжение вопроса. А при чём тут это вообще? Это делается например
условной компиляцией (причём препроцессор можно присобачить и сбоку, не обязательно он должен быть в основном ЯП), плагинами и прочими техниками, при чём тут вообще Git и сохранения в играх?