<p>How does it work, what is it used for and when should one use it?</p>

Directly from the
Strategy Pattern Wikipedia article
:
The strategy pattern is useful for situations where it is necessary to dynamically swap the algorithms used in an application. The strategy pattern is intended to provide a means to define a family of algorithms, encapsulate each one as an object, and make them interchangeable. The strategy pattern lets the algorithms vary independently from clients that use them.