A widget is a self-coded little bugger that you can drop into a widget area of your theme that will add some specific functionality or feature to it.
A plugin works more in the back end and with the actual WordPress software. It adds extended functionality to the WordPress.