You retrieve data by calling LoadGameFromSlot, casting the returned SaveGame to your particular SaveGame type (the one with your custom data) and retreating the data from it.
When you create your SaveGame add a Transform variable in your SaveGame class. Add your pawn transform there before saving.
You can trigger it from pretty much anywhere you can but in my opinion it makes no sense to be in the level. You want to have different/more levels right? You wouldn’t want to duplicate the code to each new level you make. The same logic applies to any other object. Player Blueprint - do you expect different Player Blueprints - if yes then don’t place it there because you’ll have to copy it. If all Player Blueprints derive from one “base” Player Blueprint, then - yea - if it makes sense to you.
Create a new save game class, then add all the variables you’ll need. Note you cannot store references, Only simple data.
Use your controller class to Store and Load save game data.
Absolutely limit what you do in Level BP that’s not exclusively about the level itself. Technically nothing non-level related should be in the level BP.