I have a few heuristics regarding (only) hierarchical sheets, local and global labels that might be useful. Note however, that I am working on my own, not as a part of a team, and so have been free to develop my own approach and style.
All schematic symbols and connections reside on a sheet, the "home" sheet if nothing else. So placing sub-sheets on the "home" sheet and then below creates a hierarchy somewhat like a file tree. I rarely use any tools to navigate the tree now, apart from double clicking on a sheet to go down, and the icon in the top bar that takes us up one level.
Usually the first step in adding a sub-circuit to the schematic is to create or copy a sheet. On the first edit of a sheet, you have the opportunity to select a filename for the schematic, and a title. These are important. Choose a filename wisely, especially if copying sheets. Go back to a terminal and look at the existing filenames. Have a naming convention, and a version number tagged onto the filename. Copying existing sheets can create havoc if symbols are duplicated. It is worth going back and forth between an old sheet, and its copy until you are confident that they are completely separate entities.
I rarely use global symbols, the main one being a top-level ground.
Everything else gets passed as a list.
On each sub-sheet, I make all circuit connections using local labels. My convention is to use a two part name, say "jones_+Vs". If I copied this sheet, in the copy I would then edit each of these labels to correspond with the new sheet name, for example "dallas_+Vs". Keep the first part as simple as possible without too much punctuation. Then you can select the field by double clicking. Punctuation is problematic here - it is more difficult to select.
Within each sub-sheet create a list of hierarchical labels each connected to a local label. The local label as the name implies, is used locally. The hierarchical label is passed up the hierarchy by going up one level to the sheet icon, selecting the tool that pulls up labels, and repeatedly pulling up labels until there are none left.
So on a sub-sheet, the list of hierarchical to local labels is the "interface" to the sub-circuit. It is often useful to arrange the list in a compact, ordered way. You can then copy the whole block - the "interface", and use it higher up in the hierarchy.
Often the interface is copied (with the same names) all the way up and down the hierarchy of sheets. So for example, when bringing up the interface, it might be copied, go up one level, pasted, then the hierarchical labels deleted leaving a nicely organized list of local symbols to connect to when bring up the lower level symbols.
One last tip - create a bold title block for each sub-sheet, and I also create a text block of notes. The sheet title is a visible indicator of which sheet you are currently working on. Remember the sheet has a title field? Copy the title block name into the title field.
Expect workflow changes as your project uses more abstractions. Tasks I did as a KiCad beginner are often completed in a different order now.
One of the really nice things about working with KiCad is working outside of the GUI. I don't edit schematics much by hand, but I no longer use the footprint editor except for rudimentary tasks, using a simple text editor instead.
Good luck, develop your own style and have fun.
Edits: Firstly for grammar.
Secondly, to add :
Your design will start off simply, and progress as you become familiar with the tools. Always use the DRC tools to ensure that you can get to a state with no errors, a "manufacturable" comfort zone so to speak. If you encounter some kind of unfathomable error, don't forget that you can move back and forth between schematic and layout representations.