When you declare an event, the compiler automatically creates a backing field of the target delegate type and two wrapper methods, called "add" and "remove". When you subscribe to the event, the "add" method is internally called and it creates an instance of the underlying delegate(PropertyChangedEventHandler in this case) if not already created.
When you unsubscribe from the event, "remove" method is internally called. If there are no more subscribers, the underlying delegate field is automatically set to null in the "remove" method. So you don't need to set it to null explicitly.
And this is the reason you need to check for null reference before raising the event, because, if there are no subscribers, the underlying field will be null.