Contact Roles allow you to specify information about a Contact at and Organisation at a point in time.
The information held in there may be more for a Contact who has a relationship with an Organisation, whether they work at that Organisation or not. The choice of the Organisation in the Contact Role can be any Organisation in the system.
So I could for instance see this like:
Fred Bloggs is/was on the Board for a specific Organisation which may or may not be the one he works for
Fred Bloggs is/was a Fire Warden for my Organisation
You can use the Start and End Dates to indicate if the Role is present or ended.
You can capture Custom Field information about the Contact Role.