Metadata is data about data and can take so many forms that your head will spin. Just to name a few,
database - descriptions of tables, table columns, column data types (Char, Integer, etc.) and size, indexes, keys, etc.
Entity Relationship Models (ERM) - diagrams that show how tables (or logical entities) are related to each other. For example, a "customer" may be related to many "orders" and while an "order" MUST belong to a "customer", a "customer" is not required to have an order.
Security models - who has the rights to look / modify what data.
The list could go on forever. Any information that describes the "real" data of your business is metadata. However, most of the time, when people first start talking about metadata, they usually mean database descriptive information.
And the reason it seems like you have to hire and outside vendor to implement/build it is that most companies buy tools and applications from outside vendors. These tools and applications always have their own metadata. Sometimes it's just a database schema they use in their package. Other times they have a very extensive list of "special" data objects that require them to construct their own specialized metadata descriptions.
Hopefully this gives you some insite. Just remember that anything that reads, owns, or manipulates data needs to be able to describe that data, either to the user / developer or to their own tools.
Good luck,
Matt
