I think the most complicated board I've worked on to date has had ~10 net classes.
This is in Altium, where net classes can be used for a variety of things (coloring of traces/ratlines, design rules, selection filtering, etc)
Typically I will have (in addition to default) 1-3 netclasses for power rails depending on how different they are, and then a net class for every different type of high-speed signals (so that they can be colored differently as well as having different design rules applied)
In Altium, net class membership is shown on the schematic (which I think is a useful thing, rather than having it be something that is only visible when you open up some property dialog) and can either be done on a per-wire basis, or with "blanket" rectangles that apply the class to any wires that pass through them.
In the other tools I've used, net classes are edited through some dialog, so you can see a list of all nets and group them into classes (and generate reports / export lists generally) but when you print out a PDF of the schematic you typically don't get the net class information, which I think is slightly worse than the way Altium does it.