How do you make 'Global' variables?

For variables that changes during runtime, I think the easiest path is indeed the GameInstance if you’re just starting with the engine.

For variables that don’t change at runtime you should have a look at data assets https://www.youtube.com/watch?v=hcwo5m8E_1o
This is a type of asset inside which you can add any number of variables and them you can reference this asset inside other blueprint. To make things easier to access you can create a Blueprint Function Library that directly reference the data asset and make your globally accessible single nodes that get the right variables inside the assets.