As a GMS2 user myself without the HTML license, I feel your pain. It probably took hours just to try and squash some of those bugs.
I get a "not set before reading it" error when trying to buy the first upgrade when I don't have money. Because it doesn't call out an object, I'm guessing there's some object scorekeeper that exists depending on how much is spent. (or something is destroyed and then an variable is tried to be accessed afterwards.) Whereever this code is, add the "if instance_exists(objWhateveritis) && ..." to the click logic.
As for sprites disappearing, that's really weird.
- If you are using draw_gui event, be sure to also use the regular draw event with some kind of comment in the field, otherwise draw_gui is unstable.
- If you are using the draw event, know that the sprite also needs a draw_self(). As soon as there is code in the draw event it no longer will draw the default sprite.
- Those are the only two bizarre behaviors I know of, if it isn't something like that then just check your x,y coordinates or any other object that might be moving to cover it.