Can we create a workflow which gets triggered when an item is unpublished?
Yes... and no. It depends on how much you need this requirement.
I've commonly seen workflows being designed for unpublishing. Items that are due to be unpublished are added to a bundle, and then the workflow has the logic to unpublish the items after approval (possibly unpublishing them first from staging, then from your live site).
If you really need it to be when unpublishing, then you could write some event system code that would add the items to a bundle instead of unpublishing them, and start a workflow for approval then.
I frankly prefer the first approach, possibly coupled with some UI magic to hide the unpublish button.
Since Tridion 2013 you can define an Workflow Process that will Unpublish/Expire content in the CMS. Basically in the new Workflow 2013 you can define a Workflow Process that is started On Demand for Bundles and perform different kind of operations like Unpublishing.
For instance a typical implementation will have two Workflow Process (Publish and Expiration) that can be attached to two different Bundle Schemas (Publish and Expiration) so if you want to unpublish content create a Bundle using the Expiration Schema then start the Unpublish Workflow On Demand.