What is it?
Why should you use it?
When you need an object that meets the above criteria i.e. it needs to be globally accessible and have only one instance available at any one time. A debug log hidden behind preprocessor directives is a good example. This provides the ability to output debug information to any class that requires it but it is not shipped with your final game/product.
Additional benefits include:
Why shouldn’t you use it?
Be careful when using a singleton, as they are generally overused and often not the right solution to a problem.