At some point in your Revit model’s life, you (or someone) will have to create some content for it. For non-system families, you can either create a component from an external template or an in-place family.
You don’t want to use in-place families too often. While it is inevitable that you will have to use in-place families in a project, be selective in their use. If you create an in-place family and later decide that it should be a component family, there is absolutely no way to convert it (edit: see comments below for a great work-around for this). If you must use an in place family, do not duplicate it; you will be adding gobs of memory usage to your model without realizing it. If you are making something that is not going to be a single unique object, make it as a component family.
The big caveat (there is always at least one, usually there are 17) is that System Families must be in-place families. There is no way to make those loadable families.