Класс NSNull ничего не делает, а только предоставляет указатель на одиночный объект [NSNull null].
Этот одиночный объект можно использовать вместо пустого значения nil в тех случаях, когда требуется конкретный объект, а пользоваться значением nil запрещено. Его, например, нельзя использовать как значение элемента коллекции (типа NSArray, NSSet или NSDictionary), и тогда приходится обращаться за помощью к объекту [NSNull null ].
Несмотря на все сказанное ранее о равенстве, сравнение с объектом [NSNull null] можно организовать с помощью оператора равенства языка С, поскольку это одиночный экземпляр. Следовательно, сравнение указателей в данном случае вполне допустимо.