There are 6 product types within Magento, each with slightly different functionality:
For most Magento websites, the vast majority of your inventory will be simple products. These should be used for a product that is a single item without any selectable variations, for example a printer or a pair of scissors. Simple products should also be used for any products with variations, for example if you have a shirt that comes in a small, medium and a large, you would set these up as individual simple products.
A configurable product should be used for an item that variation selections, for example a t-shirt in various colours or a shoe with a selection of size options. As mentioned in the simple product section, the individual variations would be simple products, they are just grouped together by the configurable product.
This product type is used when you have a group of simple products that are sold together as a set, for example a dining table that comes with chairs. It's worth noting that you cannot define a specific price for the grouped product, however you can define a discount.
A virtual product would be used for non-physical items, such as insurance, reservations, extended warrantee etc. When purchasing a virtual product the shipping method selection section of the checkout is skipped.
A bundle product is used to group together products that will not be sold separately, an example might be a laptop where the customer has a selection of hard-disk, RAM and processor options. Each of these options would be a simple or virtual product and would only be sold within the bundled product.
Here's an example of a bundle product.
The downloadable product type should be used for items like an MP3 file or a PDF. When purchasing a downloadable product the shipping method selection section of the checkout of the checkout is skipped.