1) a higher level of abstraction. For example, creating a class is programming. Creating a class factory (a class that creates classes) is meta programming.
2) self referential. The movie Adaption is meta, because it is about itself.
I would not call 1 metaprogramming. Meta means something like "outside of". Metaprogramming usually means higher order programming (programs that produce programs, such as source generation, lisp macros or templates).
Okay. It’s outside my area of expertise, so maybe I didn’t pick the best example. The internet seems to imply that there is a lot of debate as to what is meta programming.
1) a higher level of abstraction. For example, creating a class is programming. Creating a class factory (a class that creates classes) is meta programming.
2) self referential. The movie Adaption is meta, because it is about itself.