You should be doing the following
1. Creating you Unmanaged in Dev
2. Exporting as a Managed Solution Test / UAT / Prod / Other
You should NOT ever make changes to the flow in other environments. You should make sure to use environment variables and configuration tables to store anything dynamic.
3. It is the same flow, not a separate one. You called it an instance. Its not the right term. It is exactly the same flow in all environments.
If you change it in one you will make installing the solution or exporting that solution have a completely different flow and that will cause you headaches.
4. If you are in the SAME environment and make a change to a flow that has been added to different solutions, then it will just be seen as the same flow, with the updated changes. You will need to make sure to export the other solutions using it, (in the same environment), so that it references the correct details of the flow.
going forward from the #4 it will still be the same flow, but updated/upgraded depending on how you want to see it.