Good question.
But this is not an explanation at all:
Explanation: If a subquery returns any null value the main query will not return any rows
I suggest the following explanation.
The SELECT query can be modified as follows:
select *
from dbo.Employees
where EmployeeID not in (SELECT NullableColumn FROM NullOperation)
-->
select *
from dbo.Employees
where EmployeeID not in (NULL, 0, 1)
-->
select *
from dbo.Employees
where (EmployeeID <> NULL) and (EmployeeID <> 0) and (EmployeeID <> 1)
The result of the comparison "EmployeeID <> NULL" is undefined for all values of EmployeeID (unless you set the ANSI_NULLS option to OFF). So the result of the WHERE clause is undefined (i.e. not true), and no rows are returned.