There is some thing you should keep in mind when using projects and your flow is using 'Persistent Context' - the name of your variable.
Say you have project called 'greenhouse' and you create a global persistent context variable (stored in the local file system) called 'pump_status'. You run this flow and it store 'on' into the global. You shutdown Node-RED and start it up again and the global will contain 'on' just the way you want it to.
Then you create another project called 'sump_pump' to monitor and display the status of the pump pumping water out of your boat. In this flow you use a global persistent context variable and call it 'pump_status'. (you are probably starting to see the potential problem about now). Let's say this flow looks at the global 'pump_status' and displays it on a dashboard.
As soon as this flow starts, you get the 'pump_status', and it will be 'on' (that is what it is in storage). But maybe the pump is actually broken and the bilge is filling up and the boat is starting to flood...
So there you are, you just looked at the dashboard, see the pump shows 'ON' smile and swivel your chair to look out the window at your dock only to see your boat slowly sink under the water.
Don't let this happen to you!
Persistent variables exist in storage and any flow using them should either make sure the variable names are unique per flow or come up with a way to validate the data in the context variable is correct for this flow.
This will not be the case if you are running multiple instances of Node-RED AND each instance uses a separate user directory because the context data is stored in the user directory (when using the local file system) - unless the example above comes into play.