See post 1
Feature flags. That's a good name for what I'm doing.
So far its mostly just taking buttons off the ribbon and making certain things non-editable in phase 1.
If we start needing more than one of such flag or finding it's value being checked in more complicated places that's when I will start to worry
It's a fairly standard technique and there's plenty of best-practice literature out there. As you say, it should be used to avoid complexity, as soon as it becomes a source of complexity itself you may need to re-think.
Main thing is to encapsulate all the feature flags into a clean feature flags API so it's clear to find all the places each one has been used
It's not uncommon for such flags to become redundant, and it's easy for them to go zombie.
Dead, but still lurking in the landscape and killing things.
Where is for actual version separation though, that almost feels more like a case for a set of global constants and conditional compilation rather than runtime decisions.
Make a bad Carry On style joke, then, ffs!
Oooh Matron - the TFT screens!