A WordPress theme is what defines the look and feel of a site; while the WordPress CMS provides most of the functionality, the theme makes the site look good. So what is a WordPress theme anyway?
A theme is simply a collection of .php and .css files that tell WordPress what content to display and how to display it. There are a huge number of themes available for free; any theme available to download from within WordPress is required to be licensed under the GPL, so you can do whatever you want with it. There are also a number of premium (read: $$$) themes available, ranging from fairly cheap to hundreds of dollars, that provide more options and more optimized code than the standard free themes.
When coding your own theme, you have several options. One is to start coding from scratch. As you can imagine, this is the least popular and least efficient option.
Another is to take an existing theme and modify it to get what you want. The advantage is that the theme is already in working order, and all you have to do is make the changes you need. The disadvantage is that if the theme is updated and you want the updated version, you have to go through and make all of the changes again! Additionally, if you modified a GPL theme, then you are legally required to release your modifications under the GPL as well.
Probably the most popular option is to build a child theme. In this case, you still start with an existing theme, but rather than modifying it directly, you make your own files that tell WordPress what to change. The nice thing is, the base theme can be updated without affecting your child theme files; additionally, you can build a premium theme on top of a GPL theme. Thus, this is the preferred option for both flexibility and ease of use, and a number of premium themes exist that are child themes of other (free or premium) WordPress themes.