Mmmmm, a mi no me gusta esa definición... :S
Una variable es el "contenedor de un valor" definido burdamente.
Por ejemplo, si escribo 
int a = 5; 
la variable es "a" y contiene el valor 5. 
Con eso ahora, podemos decir que un puntero es un valor y asi como hay variables que pueden contener enterso, hay variables que pueden contener punteros. 
Y un puntero no es otra cosa que un valor que representa una posicion de memoria.  O sea que si tu puntero es 0x05451 quiere decir que "apunta" a la direccion 0x05451 de tu memoria/disco/loQueSea.
La idea es que esa direccion a la que apunta tu puntero le pertenezca a tu programa, porque puede traer muchos problemas :P. 
Los punteros sirven para muchas cosas, pero su uso puede traer muchos problemas si eres inexperto en su uso, puesto que llevan a código no seguro y muy confuso. 
La forma más simple de el uso de un puntero es para enviar cosas por parámetro que quieres cambiar dentro de la función/método y que esos cambios se tomen en cuenta.  (Como habras visto en C/C++ todos los parámetros se pasan por valor, por lo que cuando una funcion recibe algo como parámetro recibe en realidad una copia de ese valor, no el mismo, y si lo modifica desde afuera no te enteras).  Con los punteros digamos que conviertes el paso por valor de C/C++ en paso por referencia. 
Bueno, eso... Suerte!