You may have already read these, but starting with the documentation would be a good place and does cover engine philosophy which is kinda how I interpret your question.
https://docs.godotengine.org/en/stable/getting_started/step_by_step/intro_to_the_editor_interface.html
How you choose to structure your code is (imo) entirely up to you and just kinda settles after following a few tutorials, but also depends on the scale of the project. If you're not working in a team, then it is down to your discretion whether you follow any kind of rules, as best practice for you may differ wildly from best practice for someone else.
For example one way to make a 'genshin-like' could be to make a player-base scene that contains all reusuable core functions, then 3 additional scenes that can be instanced onto the player-base to define the remaining variable attributes (ie. clothes/move set/state machine adjustments etc) and a state machine to govern transitions.
Or equally valid is to do the above in reverse and attach the core re-usable player functions to the unique scenes and manage transition using singletons. There's often multiple ways to skin a cat and really it's whichever sounds logical to you.
I personally don't 'make everything a scene' as it just seems like more work for no benefit. I think of scenes as collections of objects or functions that I want to reuse elsewhere in the scene tree, or easily create/destroy, or use in multiple projects, but that definitely does not include 'everything'.
For example, I have a scene in one of my projects which is a Kitchen. While there is only one Kitchen that contains multiple objects, the kitchen does not always need to exist, and therefore it is a scene (create/destroy).
Every object inside it and the sounds associated are not going to be re-used elsewhere, and will always exist if the kitchen exists, so ~90% of the nodes are just nodes and have no reason to be further saved as scenes. What isn't, is the door (which is interactable/animated and reused for multiple rooms) and a specific interactions helper scene which I can attach to an object to make it intractable. These are thus saved as their own scenes that I either attach to objects or other scenes and translate the position as required.
I may be wrong, but I don't think there is any practical benefit in just making all branches/nodes a scene specifically if you don't plan to instance it more than once, but again it could be a design philosophy for some to do it habitually 'just in case'? Personally, I just try to design any code in a branch to use relative paths within that branch rather than absolute ones, so if there ever is a need to pack a branch as a scene and instance it elsewhere I can do it with a click. But doing it habitually just sounds like replicating the scene tree structure on the file system and doubling up the amount of mental organisation for no real reason (idk maybe I'm missing something here?).