My Advice to Drupal Newbies
I am fairly new to Drupal, having installed my first test site about five months ago (as of this writing). Some three and a half months later I launched my first live Drupal site, the very site you are reading right now. I have found Drupal to be an excellent content management system in its basic form, but going beyond the basics takes a lot of patience and a lot of time. It provides a very powerful and very extensible framework, for which many modules exist to provide all kinds of functionality. Navigating the many options isn't easy, but for the web developer, it's well worth it if you put in the time. Here's my advice to those web developers who are looking to take the plunge.
First and foremost, set up a test system. This should be one that you don't care about breaking, and one that you should feel comfortable in re-initializing and going back to square one. I have installed many modules simply for the purpose of testing the to see if they will suit my needs. Some work very nicely right out of the box. I can get some of the to work with some effort; sometime I have to fight with them to get them to work. And others have failed miserably. Sometimes with the latter case, I introduce errors into my system that are so bad that I need to wipe out my system and start over. This is not a situation I want for my live system. So I have a system I call my "sandbox", and I am well prepared to wipe it clean at any time. You need one of these.
In addition to your sandbox, you should have a test site corresponding to each live site. When you look to add new features to a site, experiment in your sandbox first. Once you get a handle on how something works, develop a plan for implementing it. Implement it in your corresponding test site (have a good backup first). Once it's working there, backup up your live site and implement there.
I have also found it useful to be able to take a backup of my live site and install it on my test site. Be sure that you have good backup and restore procedures in place, and be sure to backup before installing or upgrading software on your live site.
Drupal has lots of installable themes, and many of them are very nice. Again, try these out in your sandbox and/or test system before installing on a live system. Many of them work nicely right out of the box, but not all. I really haven't experience a theme trashing my installation; I have found that I can always revert to a working theme and everything is good to go. But I don't want to install non-working themes on my live site, even if they are not in use.
If you have a good understanding of CSS, creating your own theme is pretty straightforward. Most of the tutorials I've read suggest starting with an existing theme, and modifying it. I prefer to build my own theme from scratch, and it isn't that hard with Drupal. The default page template has several distinct areas with adequate wrappers for most styling techniques. You need, at a minimum, a .info file and a CSS file. Then, use a tool like Firebug to get a visual on the HTML code generated by the template, and you can easily style from there.
You need a pretty decent PHP installation with a database for running Drupal. I run my own servers, so I know my installation is up to speed. If you are using a shared host provider, make sure the hosting service is adequate for Drupal. If they are, they will usually advertise it as such, or a decent technical support staff should be able to tell you if the hosting is adequate. Many are not, as shared hosts often load their servers to the max, and there are just not enough resources available on the system. Drupal has fairly high resource demands, so choice of web hosting is important.
Navigating the available modules for Drupal is a daunting task. There are thousands, and you may find that you need a few good modules to add necessary functionality to your site. The Drupal Modules web site is an excellent resource.
Patience is key. Drupal has a steep learning curve. If you're looking to do this without formal training (the route I prefer to take), be prepared to do a lot of reading. The volume of online material on this subject is massive. Unfortunately, I can't point you to a single place and say, "start here." Look for tutorials; some are good and some are not so good. But take time; you'll need it.
Before you dig too deep, be sure to get an understanding of content. Most of Drupal's workings surround the idea of content, so get a handle on this early. Once you understand this, other concepts will start to fall in place.