static bool instanceFlag;
static Singleton *single;
These are data member variables, and static means that the variables belong to the whole class and not to each object, i.e. there is only one instanceFlag variable in the whole application. These variables are in the private section so they are encapsulated. A user of this class can only access these variables through an accessor method that the class may provide.
A private constructor means that users of this class cannot instantiate objects using "new Singleton" or simply on the stack.
static Singleton* getInstance();
The getInstance method is public, so can be used by other functions. It is the only way that others can create a Singleton object. They cannot just declare it normally, since its constructor is private.
Just an example method.
instanceFlag = false;
This destructor is not really necessary here.
bool Singleton::instanceFlag = false;
Singleton* Singleton::single = NULL;
single = new Singleton();
instanceFlag = true;
getInstance checks to see if a singleton object already exists. If it doesn't it creates one. If it exists, it just returns a pointer to it.
And now here is a use case:
sc1 = Singleton::getInstance();
sc2 = Singleton::getInstance();
This just shows that although you have two separate Singleton pointers, they both point to the same object, returned by getInstance.
There are many different ways that a Singleton can be implemented in C++. If you only look at one implementation, such as the one above, you will not get the full benefit of understanding its uses and its pitfalls. I recommend a good text book, such as "Accelerated C++" by Koenig & Moo, as well as the classic Design Patterns book by Gamma et al.