Here is my take on it.
I completely agree with the 70/30 ratio. C++ is awesome for keeping the project re-usable clean and has fewer bugs than Blueprints. So I use it as much as possible, but it also has drawbacks, it takes time to compile and sometimes requires editor restart (bummer).
So I use C++ to do the backend of the whole class and expose just “fun” little functions that are mainly visual. Let me give you an example, I want to make player glow when he takes damage. So I would do all the damage handling in C++, and expose “StartGlowingAfterHit” to the blueprint, where I can easily play around with Timelines, how much it glows, maybe adding a slight delay before glowing etc. etc. Because blueprint takes not time to compile, I can see it right away.
If you are asking technically “How”. Then creating UFUNCTION(BlueprintNativeEvent) void StartGlowingAfterHit()
is the trick. Since the Blueprint is just a child class like any other, this will allow you to override it in the Blueprints!
Onto the Main player asset into the scene, I am not 100% sure what you are trying to achieve here, but GameMode->Default pawn is probably what you are looking for.
Hope this was useful!