Well the answer to your question is that Type.NULL is something that you define yourself or read about in the docs/code if it is coming from a dependency and use instead of NULL.
There are times when having your software lie to you is better than having it do nothing. That's when you use Type.NULL.
There are also times when having the software crash is better than having it lie. That's what NULL is for.
Of course, if you and everyone on your team always writes correct code then it doesn't matter how you encode non-existent values. Your code will neither crash nor lie. The problem is that writing correct code is sometimes hard and often takes a lot of time.