A plugin is essentially an add-in for CRM to perform some business logic during various operations; typically when a record is saved (whether create or update). These can operate synchronously or asynchronously - though many users want whatever it is to happen immediately; rather than wait some (unspecified) time (ala workflow...) - so synchronous is the obvious choice.
For example:
Some of these operations could be equally performed using Javascript; the key difference being Javascript extensions of CRM operate on the client whereas plugins operate on the server.
A plugin can run pre or post action (create/update) - this allows you to modify the record prior to saving (for instance) or run after saving to update other records.
Take a look at the attaching sales literature to email for some code snippets.