I have always found the discussion of metadata to be problematic – somewhat like the dsicussion of "objects vs data" in the early days of object orientation in general computing. For some people it seems to make sense to refer to metadata as anything that it is not a raw number – as in "I will send you the image and the metadata" or "I will send you the sensor readings and the metadata". A result of this viewpoint is often seen in metadata specifications which can easily subsume all specifications – since it is ALL metadata.
A more sensible approach is to separate the tasks of data and metadata. Data is about defining objects (A vocabulary of terms) that describe and enterprise, an application domain or an application. The definition of such objects is a key part of information modeling. Up to this point we don't need the construct of metadata.
Once we have defined the set of objects for a given domain we can then talk about metadata for those objects – i.e. who created them, when, why etc.
If we apply this to imagery – we see first that we need to define various types of "image objects" – what in OGC/ISO terminology are called coverages – and then we can speak of metadata for these coverages.
In the GML world this is handled by the inclusion of a metaDataProperty with a content model that is essential XML Schema any. The metaDataProperty (or some other named property with the same content model) is intended to hold the metadata properties concerning the GML application object to which it is attached (its Parent element). As for other GML properties the metaDataProperty can carry and xlink:href that points to the metadata properties rather than having them inline. Metadata can thus be readily shared across multiple fature instances.
Every GML object contains an optional metaDataProperty by default – hence metadata can be attached to features, coverages, temporal objects, coordinate reference systems etc.
Note that GML does NOT specify the metadata properties pointed to or contained within the metaDataProperty – this is to be defined by a metadata application schema. Such a metadata application schema can be something widely standardized (e.g. ISO 19139) or could be defined by a single organization. This is not up to GML. GML simply provides a way of saying that the things in here (inside the metaDataProperty) are metadata. The other properties of the object, as defined by the GML application schema, are the properties that characterize (or define) the object.