WordPress Plug-ins are PHP scripts that can be used to provide added functionality to your site. Some are small and simple, such as those that add certain widgets to your site. Others, such as BuddyPress, provide a much broader array of features.
Here on this site I've used plug-ins to reduce comment spam, support search engine optimization, include Google analytics, back-up the database, etc. To learn more about the specific plug-ins used here, view this list of plug-ins which links to short posts I've written about each.
Do you always need a plugin?
No, while plugins are handy, some are simple enough that you could produce the same outcome by creating a special template or by simply adding a small PHP script to your functions.php file. And while many plugins are quite useful, the quality can vary. Some may conflict with others, so you may have to try a few before settling on the ones that work best for your particular needs.