You'll need a combination of technologies. If you go the open-source route, then the most prevalent is LAMP (Linux, Apache, MySQL, and PHP).
PHP for the scripting, SQL for the database, and you'll want to learn Apache configuration, especially the mod_rewrite module (which has so many features, there are whole books devoted to it).
Come to think of it, you'll want to learn Regular Expressions. Specifically, Perl-based regular expressions used by PHP functions like preg_match() and preg_replace().
If you're the sort who likes to dive right in by looking at source code, you have a lot of options. Most of the popular blog and discussion board software is all open-source, and written in PHP...
http://drupal.org
Drupal deserves some special mention here. It's almost always my system of choice... a very powerful categorization system (taxonomy), better-featured and better-looking discussion boards than PHPBB, better blogging capabilities than WordPress, and so many powerful add-in modules that you could build your own Yahoo Answers (complete with voting) without having to do any programming at all. I kid you not.
http://joomla.org
http://wordpress.org
http://wikkawiki.org
Others worth mentioning...
http://oscommerce.com
http://zencart.com
(Two shopping cart/online store applications. And yet, Drupal's eCommerce module is nicer. Okay okay, I'll shut up about Drupal already).
http://moodle.org
(An online classroom environment, once again, open-source and writtin in PHP)
http://phplist.com
(Software for managing LARGE mailing lists, newsletters, etc)
http://mediawiki.com
(The PHP-based wiki engine written specifically to run the massive MediaWiki site.)
Finally, now that we've beaten PHP to death (or is it life)... let's look at the client-side of things... your options are Javascript, Flash, Java, and last but certainly not least, AJAX.
Why not least? Well, if you've used GMail, Yahoo Maps, NetFlix, Traffic.com or (ahem) Yahoo Answers, then you've already got a pretty good idea of what AJAX can do to make a site dynamic. It's really more of a technique than a language... it's all about using some of the COM object capabilities of JavaScript-enabled browsers to talk to an AJAX-aware server technology (PHP can do this), typically with data formatted as XML.
Did I say "finally" before? Oops. One last PHP-related thought. The lanugage has a bad rep in some circles because it's TOO easy to learn... it becomes quite simple to end up with a mess of spaghetti code if you're not careful. A great way to start would be with unit testing and self-documenting code, using these two free utilities...
Unit Testing with SimpleTest
http://www.lastcraft.com/simple_test.php
PHPDocumentor
http://www.phpdoc.org/
And one of the best all-around development environments for PHP (and then some), ActiveState Komodo (if you don't need live debugging, it's free)...
http://www.activestate.com/Products/komodo_edit/