Coding Concepts – Reflection

Reflection is a term thrown around every now and again, but do you really know what it means? Why and when it should be used, and what are its main strengths?