My advice has been from the myopic viewpoint of an architectural firm working through a project and building their own content. They know what they want or need to schedule and build accordingly.
What if you make content for other people like a window manfacturer or playground equipment manufacturer? What if you want parameters that are specific to the products that you're building content for? What if the stock system parameters don’t suffice? Shared parameters to the rescue!
When you use one to establish the information in your family the user will inherit the information when they load it into a project automatically. Better yet they’ll be able to schedule it even though they don’t have the shared parameter file you used to create it. They won’t be able to put that information in a tag unless you provide them with one too, which is a pretty a good idea.
Now switch sides…do you (the user of this nice family) want to add that parameter to your shared parameter file? Yes? Perfect! Playing along nicely!
There are two ways to get to this shared parameter, the family or in a schedule. Either way you need to be able to “touch” the parameter so you can use the Export option for shared parameters. Revit will add the parameter to the current shared parameter file you are using.
In a family you need to open Family Types, select the parameter, choose the Modify button.



The only family type that doesn't play along with this scenario is titleblocks. Shared parameters that are used in titleblocks must be "connected" to a project by adding the shared parameter to the project as a project parameter, since titleblocks are sort of a "tag" for views.