It does get applied to existing saves that had an older version of the mod that hadn't run the migration file though, and also to existing save files that didn't have the mod.
I haven't tried json mod migrations and don't know if the same thing happens for json migrations.
Edited to add:
According to https://lua-api.factorio.com/latest/aux ... ve-startup , migrations are run after on_init(), in saves where the mod is considered "new"
... A mod is considered new to the save either when the player starts a new save with the mod enabled, ...