You might be thinking of Dictionaries -- you can delete those by setting them to an empty JSON structure.
Globals, even empty globals, persist. Better yet, your "Pause Until... is not empty" test will create the global if it doesn't exist (rather than error out) -- and that global is created empty. You can try this for yourself with my macros above -- open Settings->Variables and find Global_requiredVar
(or scroll to where it would be if you haven't run the macro yet). Open "Run Me!" in the Editor and add an extra "r" to only the "Pause" action:
...and when you run the macro you'll see the new global appear in the Variables pane. But the macro will pause "infinitely" because "Random Timer" sets the correct variable while "Run Me!" is looking at the incorrect one.
So you need to check your variable names carefully! If you've got it right everywhere except the "Pause" action then your macro won't error out -- but it will never complete, either.