A reference can not be NULL or it can be NULL?
You can have a null reference, not sure why anyone would say otherwise, it is a nasty side effect of some operations. You just can't create one directly.
In your code:
person *object=NULL;
person &object1=*object;
you dereference a NULL pointer, so you get undefined behaviour. And to answer your question, there is no such thing as a NULL reference.
And to address the other part of your question, just because a program compiles, there is no guarantee that it is correct or that it will work. C++ compilers are not required to even attempt to diagnose the kind of error your code contains.
that would crash your program. Did you try running it? doing *object will deference a null pointer, so in fact your reference never gets assigned.
Saying person &object1=*object
is not the same thing as saying person &object1=NULL
. Probably the compiler is just not smart enough to find out that you are dereferencing null pointer, but you'll get a runtime error anyway. So they are kind of true still ;)