In the normal course of development, people build languages on a regular basis. For instance, when they use a subset of the UML for analysis and a larger subset for design, and when they specify what the elements of these subsets actually mean, they've defined two new languages, each with a different purpose.
There are two major reasons to seek relatively formal definitions of new languages in the context of MDA. The first is communication among team members. There needs to be agreement on whether to include things like persistence, and many other issues like it, in a certain model, and on how to represent those things. The second is communication with machines. Defining languages formally allows for mappings between models expressed in those languages.
One way to define a language involves using the MOF, which supports several important concepts that can serve as the foundation for a new language. Since the metamodel for the UML is already defined using these core concepts, it's relatively straightforward to use the MOF to define a language this way. Another way involves extending the UML via profiles, which are mechanisms for adapting an existing metamodel with constructs that are specific to a particular domain, platform, or method. The key elements of profiles are stereotypes, which extend the basic vocabulary of the UML, and constraints, which specify conditions within a model that must hold true for the model to be "well-formed."
Note that the "definition" of a language is, strictly speaking, the abstract syntax, which addresses the structure of the language separated from its concrete notational symbols. Defining a graphical notation for a new language in other words, a concrete syntax and notation to use in creating, editing, and maintaining the models expressed in that language is a separate problem. Fortunately, there are straightforward ways to represent a new language graphically using the MOF and the UML; these include mapping functions and marks in addition to models and the underlying metamodel.
Chapter 7 explores the topic of building languages in some depth.