Drush is a command line shell and Unix scripting interface for Drupal. This tool will help you quite a lot when building a Drupal website, saving a lot of time with repetitives or time consuming tasks. If you don't like command line, you can forget Drush...
The main interest will be the time consuming compared to the graphical environment of your site. The gain is not phenomenal but during maintenance or construction of a website you will quickly get its interest. If you are ready to learn, the Drush Scripting allows you to automate tasks on your site and in your environments (staging, pre-prod, prod ...).
Drush under *nix
Many distributions have a drush package, it will not be the latest version but installation is quite easy:
sudo apt-get install drush
sudo yum install drush
brew install drush
Drush under Windows
You should have Git for Windows on your system to get a working unix shell.
First step with Drush
Under linux you now have access to the drush command. Without arguments, it will just list all available commands.
Basic drush commands (with useful options!)
You must be in your Drupal website root directory (/var/www/drupal, or EasyPHP\data\localweb\projects...)
First get a status
Download a module or a theme
drush dl PROJECT_NAME OTHER_PROJECT ...
Whitout arguments it will download last Drupal release:
Enable a module (-y argument avoid prompt and download the module if it is not in your installation)
drush -y en PROJECT_NAME OTHER_PROJECT ...
Disable a module (-y argument avoid prompt)
drush -y dis PROJECT_NAME OTHER_PROJECT ...
Get the main user one time login link if you lost the password (very useful!)
Flush all caches
drush -y cc all
Flush theme cache (for templates overrides)
drush -y cc theme-registry
Flush menu cache (if you write a new HOOK_menu or alter one)
drush -y cc menu
With css / js aggregation, flush this caches for a little modification
drush -y cc css-js
Launch cron, -v argument will give you more informations, very useful when a cron is stuck and you don't know why!
drush -v cron
Get all the module enabled
drush pml --status=enabled
With module Backup & Migrate, you can get a database dump
With Feature module, see all features
Only enabled features
drush fl --status=enabled
With Feature and Diff, see feature overrides
drush fd NAME_FEATURE
Update a feature with current values
drush -y fu NAME_FEATURE
Revert a feature to get back to code values
drush -y fr NAME_FEATURE
With Devel module, fully reinstall a module (disable, uninstal and enable)
drush dre NAME_MODULE
There is a lot more, but these are those I use the most, of course a good way to handle this is to create your own aliases!