Applications can use Growl to send event notifications to your screen (Download finished, Backup finished, New Articles in your News Reader, New Mail, Your power plug has come out, your power plug was inserted, you have 70% battery left, a disk was just plugged in, a disk has been unplugged, your iPod was just attached, etc....)
What Growl gives you, "The User", above all the other ways an application can post an event on your screen, is that Growl lets you configure the event display independent of the application that send it. You can change its color, you can specify the style of the event displayed, you can specify the area it gets displayed on the screen, and MOST IMPORTANT you can specify that the event display hangs around until you dismiss it or have it automatically go away after 'n' seconds and the application has nothing to say about this. You are in the driver's seat.
Growl has some other features, like you can send your own Growl notices from a script (Applescript, Automator, shell scripts). Growl even has the ability to send an event notice to a different system (useful for someone adminstering multiple Macs.
But in my opinion the best think about Growl is that you get to control each display event separately from the other events and independent of the applications issuing the event. OK, I also like sending my own Growl notices from long running scripts, but that is just me 🙂