Hola:
Los punteros, son una señalizador a un lugar en la memoria que va a utilizar el o los programas que hagamos. Ese lugar, puede serreemplazado por una variable del mismo tipo, o por unconjunto devariablesdelmismo tipo con lo que tendriamos un array (vector o matriz)
La forma de crear un arreglo en forma dinámica (mientras se ejecuta el programa) es presisamente a travez de un puntero que indica el punto de inicio del mismo y además es el elemento [0] del mismo.
Pero no solo se usan allì, sino que cuando por complejidad hay que enviar datos a una función, se usan tambien los punteros http://c.conclase.net/curso/?cap=015b
Ademas los punteros en c++ cuentan con una aritmetica de punteros, que permiten manipular datos https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Punteros
lo que hace la programación tradicional, por el simple traspaso devalores algo mucho mas versatil(aplicable a gran catidad de procedimientos) y el código mucho mas corto, que es una de las premisas de la POO y de la programacion modular.
Posiblemente en tus primeros pasos, los punteros mas te compliquen que solucionen problemas, pero como toda herramienta, está destinada a facilitar un trabajo, y una vez que entiendas bien su operatoria, verás que en muchos de los casos es conveniente usar punteros antes que valores explícitos.
El puntero en c++ tambien se puede usar para cargar estáticamente un string
char *frase ={"Buenos dàs su señoria"};
lo cual es equivalente a una cadena de caracteres, pero se puede aplicar a mensajes del programa que siempre serán los mismos
Seguro se me olvida una que otra aplicación, perocreoque con esto basta para justificar la utilidad de los mismos.
Saludos
Antonio