Canonical used to, and I am sure continues to, offer a netinstall ISO image. This most things from the internet. The base install is installed and then you can install what you want after that. This can make for a much smaller, less bloated install.
If you want to remove some packages from a meta package there are 2 ways to do this.
1>Remove the meta package and install just the components you want. As long as you do not purge the package your configuration files should still be in tact.
2>Open aptitude and run, as root;
You can then remove the individual components you want to remove.
The "keep-all" command changes the state of your packages to manual from, in the case of meta package packages, automatic. You need to concider this before using the command. It can lead to problems.
I have not run anything from Ubuntu for quite a while. It is rather brittle and may not function well if you go tha that route. I would be a bit leary of trying any kind of real tools for dealing with this myself. They removed aptitude years ago so users couldn't mess with the way they want to set things up. This trend toward a co-dependent system that breaks when messed with has only gotten more intense from what I read. Therefore I would not really recommend using option 2 under Ubuntu.
If you want control of your sytem and must use Ubuntu try to learn enough to go the netinstall route. It will still load your system with a lot of limiting factors and some bloat (ridiculous crap dragged in by the package ubuntu-minimal) but that is what makes Ubuntu what it is. You will not have to have all the stuff dragged in by the "whatever-desktop" packages or any other meta packages if you do a little homework.
You can see the depends for those packages in Synaptic if you set the preferencs right. It is hard to copy the information out of there though.
Much better is to use;
sam@lounge:~$ apt-cache showpkg xfce4
4.10.1 (/var/lib/apt/lists/ftp.us.debian.org_debian_dists_sid_main_binary-amd64_Packages) (/var/lib/dpkg/status)
Description Language: en
4.10.1 - xfwm4 (2 4.10.0) xfconf (2 4.10.0) xfce4-settings (2 4.10.0) xfce4-panel (2 4.10.0) xfdesktop4 (2 4.10.0) thunar (2 1.6.0) gtk2-engines-xfce (2 3.0.0) xfce4-session (2 4.10.0) xfce4-appfinder (2 4.10.0) xfce4-mixer (2 4.10.0) orage (2 4.8.0) libxfce4ui-utils (2 4.10) xfce4-goodies (0 (null)) xfce4-power-manager (2 1.2.0) gtk3-engines-xfce (2 3.0.0) xorg (0 (null)) desktop-base (2 5.0.4) thunar-volman (2 0.8.0) tango-icon-theme (2 0.8.90) xfce4-notifyd (0 (null))
The Dependencies are what you need to copy out so you know what to install. For instance I really have no problem with most of what is installed with the example package above; xfce4 (from Debian obviously). Main problem there is the xfce4-goodies package which is a meta package on its own and has a lot of things I don't use. There for I install the rest of the stuff manually and then the, I think, 2 out of a lot of packages in the "goodies" package.
That is all a meta package is, an empty package with several depends. Note for instance "xfce4-goodies (0 (null)". There is no version number. It is an empty package. The actually packages are listed in the install script for the package and they get installed.
When you try to remove any package that is installed by a meta package it will, because you are removing a dependency, remove the entire package. Depends all have the state of automatic. If you install those same packages individually then they will have the state of manual. They will have depends of their own that will be installed and have state automatic.
Meta packages are great. They save a lot of typing. If you have a couple of boxes on which you want the same install you can see this could be a real pain. There are other tools for cloning an install, however, if that is the case.
Those tools are all included in any Debian based system in your package management system. Of coarse there are 3rd party applications that will do the same thing and this is the way for Ubuntu users to go. Most do not want to know what package management even means. Those 3rd party applications use the native tools without you having to think. Of coarse the first time their built in scripts to run the base commands screws up it becomes difficult to correct any issues but you can always reinstall and complain about the "hardness" of doing these things.