en tu ejemplo... para nada :)
Pero en la vida real... para todo.
Los arrrays en C y C++ son modelados como punteros, por ejemplo:
int x[10]; //es un array de 10 enteros
la "x" es un puntero al primer elemento de los 10 elementos, así que hacer
x[0] ó *x (el valor almacenado en la posición de memoria apuntada por x) retornan lo mismo.
Cuando tú quieres que la computadora te dé más memoria de la que has reservado para tus datos, lo que te devuelve es un puntero a esa memoria.
Por ejemplo, para almacenar una lista de strings, podrías hacer:
string lista[100]; //pero esto te limitaría a 100 elementos
Si quisieras que el sistema operativo te dé más memoria, tienes que hacer algo como:
string* lista = new string[n];
//donde n será el número de elementos que necesitas en ese momento. El operador "new" te devuelve un puntero.
Y así...
Sin punteros, tu programa sólo podría manejar las variables que has definido y listo, con los punteros puedes pedir al sistema operativo q te dé lo que vayas necesitando a medida de que vayas necesitando.