You dont have to use GameInstance at all, if you want to you can save data between levels with SaveGames.
But why would you do it if you dont need it? Its like wanting to open the door but instead you take a rock and throw it in your window to get in, you can do it but as long as you have the keys you dont need it.
i’m not an expert but as far as i know, save game will contain all the data of the game that have to be saved but moving from level to an other doesn’t require restoring all the data (you may want to transfer only player stats: health,ammo count, things like this)
so as far as i can tell the difference is about the game resource optimisation3
Like HAMZAest10 said.
Its writing down informations and putting them in a locker, go back to the locker search for the informations and give it to someone, or you could just give them away.
You can do it in case you need them to be saved.
I use game instance as a container for all my “global variables” and things that are otherwise difficult to share between BPs and simple data to retain between level loads. It just makes things easier.