Se leggi il manuale c'è scritto , e trovi indicazioni su tutte le macro definite.(che sono tante utili e non c'è solo il __delay)
E' ovvio che si parla di un ambiente specifico che è quello della HiTech, se usi un altro compilatore non funziona.
Htc.h non è altro che un file di inclusione dove vengono definite tutte le costanti in base al microprocessore in uso,quindi non c'entra niente col delay.

In tutti i casi quella macro(__delay_ms) è limitata, inquanto non puoi specificare un intervallo di attesa superiore ad un 'tot'.
Il tot è quantificabile nel numero di cicli macchina necessari al rispetto dell'attesa specificata generati dalla macro che deve essere inferiore al tempo di intervento del watchdog(anche se disabilitato).In fase di compilazione infatti se l'intervallo supera questo limite il codice non viene compilato.
In molti codici di esempio si fa riferimento invece al Delay(con la lettera grande e senza __) al quale ti riferisci tu, ed esso è definito in un inclusione diversa(in molti casi delay.h) ma altro non è che un ciclo for che ripete 'N' __delay_ms() quanti ne servono per completare il ciclo di attesa richiesto, interponendo tra ogni ciclo un clear del watchdog timer.
Saluti.