Witnesses have 3 roles:
- Technical
As @albensilverberg stated, the main task for witnesses is to maintain a working node and to sign blocks that will be added to the blockchain. - Financial
Witnesses can tweak some financials parameters of the platform.
For example, they have to regularly publish a price feed that allow to compute conversion between STEEM and SBD - Social
Witnesses are kind of ambassador for the blockchain and can promote it by either doing advertising/public relation or by developing tools that will help its adoption.
There are several posts on steemit that cover the witness roles in more details.