Look at the prototype:
// date as ddmmyy, time as hhmmsscc, and age in milliseconds
void get_datetime(unsigned long *date, unsigned long *time, unsigned long *age = 0);
The function get_datetime is expecting unsigned long pointers (see the asterisks).
Thus you are correct in passing &fix_age which is a pointer to the unsigned long fix_age.
But afterwards the variable is a simple variable. You don't dereference it. You dereference pointers, eg.
unsigned long fix_age = 0 ;
unsigned long * ptr_fix_age = &fix_age ;
gps.get_datetime(NULL,NULL, ptr_fix_age);
In this case the variable ptr_fix_age is a pointer (see the asterisk) and its value is &fix_age because the "&" operator takes the address of the thing it is next to.
Now, you could either say:
if(fix_age < 1000)
or:
if(*ptr_fix_age < 1000)
If you use the pointer you dereference it. If not, you don't.