Excluding Null Values
NULL is special. It is neither equal nor non-equal. 

Given the same temp tables in your example, consider the results from these queries:

--returns 3 rows
SELECT * FROM #Data;

--returns 2 rows
SELECT * FROM #Data
WHERE answer NOT IN (SELECT answer1 FROM #GoodAnswer);

--returns 0 rows
SELECT * FROM #Data
WHERE answer IN (SELECT answer1 FROM #GoodAnswer);


This is because the definition of  NULL is that it is unknown. Since you don't know the value of it, you can't evaluate it's equality or inequality. Instead, you have to explicitly query for IS NULL or IS NOT NULL.