A null value means that it is basically undefined. So, any operation with a null always returns a null. And even a simple null=null check will result in null. Things may be different in different languages. You can however see if this helps: Null (SQL) - Wikipedia
I understand what null is. It's the operator that causes the issue. I thought that operators return a boolean, True of False. http://onlinehelp.tableau.com/current/pro/desktop/en-us/functions_operators.html
If [Dim1] <> null
This should return true, because Dim1 is not null; it is not not empty / undefined.
As you mentioned things will be different in different languages... just wrote some C# like 10 minutes ago and used != null, so I am wondering how whatever is underneath Tableau's calculation language works.
Why does <> null & != null always return null?
My understanding is, NULL is just a place holder which tells the absence of value, it is not a value or an object. While <>/ != is operator which compares two values or objects. That's why you can't use operators in this case.
Even though a dimension is not null, an operation with a null/undefined will be null.