xyz Sorry, should have been clearer from the start.
My testing project aside, the main thing I plan on doing is passing arguments to functions. One use: I'll have a JSON of objects with "id" and "text", I'll have a function on the node that finds a specific text from the JSON by its ID and prints it when you click on it. I want to be able to easily add or change the ID in the inspector. So I would add "apple" to the node, click on it, it would find "{"id":"apple", "text":"this is an apple"}", and print the text.
I can do this with exported variables or metadata just fine, but I wasn't sure how reliable that is.
Another, though this should be it's own separate question, I was looking if I could use exported vars or metadata to "overwrite" the texture of a child - basically this question: https://gamedev.stackexchange.com/questions/157845/how-to-expose-a-child-node-s-texture-from-the-parent-in-godot - but also have it update in the inspector and not just at runtime. Maybe using @tool, but I don't know if that's right...
The third use is if I just wanna attach some resource to a node, which I've been using metadata for.
I just did another test and exported vars also disappear if I delete the mono folder, which is understandable, but I've had to do that in projects before when troubleshooting. Just today, I'm not sure what happened but instead of giving me an error Godot kept using the last successful build and acting like everything's fine, I had to delete the mono folder to force it to rebuild and actually get an useful error message. So if I use exported vars and that problem happens again, all my values are gonna get lost.