I need advice about the way I change my workflow.
I copy the existing one and on the copy, I add new statuses if needed with new transitions. I do not delete the statuses not needed (but delete the transitions to them) so when I do the bulk change the old statuses of issues before workflow change remain the same.
This is very helpful when the new workflow is very different to the old one and statuses cannot be related to the new ones.
I would like to have an expert opinion on what can go wrong with this method.
To prevent having "stuck" tickets that can't be transitioned ... I'd suggest adding a "cancelled" status (or similar) into your workflow and then map all of the "abandoned" statuses onto cancelled instead so the status for those tickets get updated whenever the new workflow gets applied to your project (and effectively get removed from appearing in an "active" state).
In your way, people would still find & see the data in these abandoned status when doing queries/searches. Keeping "noise" is probably never recommended.
If needed, you could add a condition on the transition to "cancelled" so it doesn't appear to normal users (and also ensure the "resolution" field gets set during post-processing on this transition - so these abandoned tickets appear resolved/closed).