I had to cheat to get this and actually run the code. I got suspicious when I couldn't see the answer I was expecting "Invalid column name 'c1'."
Personally I think that's a bug, because the inner select returns no rows and should therefore be equivalent to
select c1
from dbo.t1
where c1 in ()
which returns a syntax error (but I can also understand an empty set as there's nothing inside the IN statement).