If you have a shell account, it simply means you can telnet into the server at Dreamhost and run commands. If you are smart, you use an SSH program instead, which is the secure version of telnet. (Telnet communicates passwords in plain text, and in theory, someone could grab them.)
With a shell account, you can create directories with the mkdir command and change file permissions with the chmod command. That’s about all most people ever do - and you can do that much from many FTP programs.
If you write your own CGI programs, you can telnet in and run them from the command line. If the program bombs when you try to run it from a browser, all you get is a 500 Internal Server Error, but if you run it from the command line, it will tell you that there are ^M characters at the end of the lines (that means you FTPed a DOS file in binary instead of ascii mode) or it will tell you that there is a problem with something at line 37. When you check the file, you will find that there is actually a semi-colon missing at the end of line 36 - and that is a lot easier than scratching your head and wondering why the program bombed with a 500 error.
If you write your programs in C instead of Perl, you can run the compiler from the command line. Or you can use grep to find text in several files of many, or use sed to make the same search-and-replace edit in several - or many - files.
Asking what a shell account is good for is like asking “but what is it good for?” of the mother of a newborn baby. All it does is make noises at one end and messes at the other - but eventually, something good can come of that baby. Same with a shell account.
It helps to learn something about linux (or unix, which may as well be the same thing, as far as you are concerned) if you are going to be a webmaster. Hint: on any computer-related topic, the best bet when you head for the library or the bookstore is to keep an eye out for “O’Reilly & Associates” on the book spine. One book of theirs is worth a dozen by any other publisher…