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!