A normal (local) variable is assigned to a particular object/instance, like how each enemy has a hp variable of their own to keep track of their health. When that enemy is destroyed, all its variables are gone.
When you finish a level and go to the next one, (nearly) everything in the old room (including the player) is destroyed, then in the next room a new player is created at the start position. So to keep track of things like player health, money, etc from level to level they are stored in global.plife, global.money, global.bombs, etc.
oh so { global.isDamsel } would return a boolean value named isDamsel?
global.isDamsel will return a boolean value. It doesn't return another variable just named isDamsel if that's what you mean. The 'global.' in front of it just means that you can change/reference it from anywhere in the game. That's why all the keyboard/gamepad keys are stored in globals like global.joyStartVal when the game is started, otherwise you would have to do something like load the .cfg files again every time you went to another room (or use a persistent object - but don't worry about that).