Say we have a companion, Borcha. By default he looks like a horse thief, and wears a khergit armor. He's a troop entity. What he's wearing and his stats are data saved in the savegame so those require a new game to update. If you place an item before the khergit armor, he'll have the new item in his armor slot (which isn't a good thing) and every item after that is also screwed up in hero inventories.
Now, your party consists of yourself, Borcha, and a Farmer. If you put something before the Farmer, he'll get bumped down and you won't see him in your party. Say you change the farmer to be also able to upgrade to a bandit. That change is a reference between the farmer and bandit which will apply in your savegame.
Slots are data much like troop inventories. Pretty much everything you'll see in module_constant is a reference, but the game doesn't care what your references were called in the module system - it's all compiled into numbers now. So if Borcha's slot_troop_morality_type had a value of tmt_honest=4, and you later shifted slots so that slot_troop_morality_type = 63, the script accessing an older savegame will instead access what was slot_troop_morality_value.