A workflow is essentially an add-in for CRM to perform some business logic. CRM has configurable workflows which are very powerful; but these can be extended further by writing custom workflow "steps" in C#.
We've experimented with custom workflows; and from a coding perspective they're very similar to custom plugins. Some code examples can be found here.