For me there is no difference between shared project and shared family. Am I wrong?
I use shared only when they have to be reported (tag or schedules) or when I now I am going to edit them from the project in several families (usually instance parameters), eg. If I want to be able to change the elevation from several windows, it needs to be a shared parameter, in order to be able to adjust them at once.
I use global parameters rarely, but I feel I should use it ofter. I use it for material, when I am not sure about but I now they will have all the same, like stairs runs. It could also be uses in the last example (windows elevation).
I use family parameter for anything that doesn’t NEED to be shared no matter if it is geometry or not.
I almost never use a project parameter that is not a shared parameter.
You could add to your list “Project Information”