Dunque,
d è il puntatore all'oggetto new Dog(), che risiede in memoria,
tramite il quale è possibile referenziare tale oggetto.

Senza assegnare l'indirizzo di new Dog() a d,
potresti utilizzare l'oggetto solo in forma anonima,
cioè una sola volta:

int zampe = new Dog().getZampeNumber();

tramite d, invece, puoi continuare a referenziarlo:

int zampe = d.getZampeNumber();
String razza = d.getRazza();
ecc....

Non capisco cosa non ti è chiaro.
Nei post precedenti hai menzionato il termine "puntatore",
quindi ne conosci il significato.
E' lo stesso concetto dei puntatori di C e C++,
solo che a differenza dei suddetti linguaggi,
dove puoi anche non 'puntare' un indirizzo di memoria
Java ha solo reference.

Ciao