Hola Rodrigo! El uso más frecuente de punteros es en listas enlazadas y en árboles. Mientras que las variables "comunes" contienen valores que utilizamos directamente, los punteros contienen direcciones de memoria, y para conocer el valor contenido hay que utilizar ^.
Por ejemplo, si tenemos un puntero a tipos de dato integer:
TYPE
PTRINT = ^INTEGER;
VAR
P : PTRINT;
BEGIN
NEW(P)
P^:=20;
WRITE(P^);
DISPOSE(P);
END.
De esa manera, lo estarías tratando como una variable integer, pero no debes olvidar usar el "techito". Lo que haces con NEW es crear una variable dinámica y asignarle el puntero. DISPOSE hace lo opuesto.
Espero que ésto conteste tu duda, sino avisa. Un abrazo!