I’ll start out with a quote from an Microsoft MSDN Article on site definitions:
“Changing a site definition after it has already been deployed can break existing sites and is not supported. If you find that you must modify a site definition after deployment, keep in mind that adding features can cause fewer problems than changing or deleting them. Changing features often results in loss of data, and deleting features often results in broken views.”
The full article titled “Guidlines for Using Custom Site Definitions” can be found here.
Nevertheless there are plenty of scenarios that call for them, and they are not all that difficult to work with. I’ve written an article with a set of excersies that walk you through most of the basic steps you’ll need to be familiar with when creating custom site definitions.
Section 1, “Creating Site Definitions”, gives you step by step instruction on how to create a basic site definition based on the “STS” out-of-the-box definition.
Section 2, “Adding Content”, gives you step by step instructions on how to add a WSS page to your site definition (not a publishing page.) It also walks you through creating a Picture Library and an Image as part of your site definition.
Section 3, “Adding Master Pages”, gives you step by step instructions on how to include a master page in your site definition.