Metapackages are specialized Packages in ROS (and catkin). They do not install files (other than their package.xml manifest) and they do not contain any tests, code, files, or other items usually found in packages.
A metapackage is used in a similar fashion as virtual packages are used in the debian packaging world. A metapackage simply references one or more related packages which are loosely grouped together.
Most of the metapackages in ROS are backwards compatible placeholders for converted rosbuild Stacks.
For more information on the internal structure of a metapackage or how to create one, see: catkin/package.xml#Metapackages