I just read, and followed this article on differencing disks: http://www.andrewconnell.com/blog/articles/UseVirtualPCsDifferencingDisksToYourAdvantage.aspx
It was really helpful for a first timer like me. In my daily work I have to access different customers’ remotely, and they all have different ways of logging on and different security requirements. To help me with this, I have set up a couple of virtual pc's. The only problem so far, has been the lack of space on my hard drive. But thanks to this article, I have saved a lot of space. I now only have 1 core disk with the operating system and basic functions. Then I have one VM, and diff-vhd for each customer.
In addition to the tips this guy have, there are a few things I want add to "what to do to the base".
If you're really keen on saving space, I would run cleanmgr on the disk first of all. Then I would look for hidden files and folder containing uninstall information on service packs and patches (Let's face it, if you're creating a static core, you're probably not going to uninstall these patches). After cleaning up, go through basic settings you like to set to your image. From the top of my head:
• Remove all visual effects you don't need
• Stop services you probably don't need (don't worry, you can enable them later, if needed)
• Start a few programs, and set your "standard settings"*
Then continue with the final preparations described in the article (and don't forget to sysprep if you want different SIDs in your environment.
(* One good example is Internet explorer. I always set my preferred homepage, usually blank, adjust some settings in advanced settings, set a preferred search engine and so forth. Since I "always" do it, it only makes sense to set it once, in the core)