WHERE 1 = 2 returns a row
An aggregate query without a GROUP BY is a scalar aggregate and (in the absence of any HAVING clause) returns exactly one row. 

So if you do 

SELECT COUNT(*)
FROM EmptyTable


Or 

SELECT COUNT(*)
FROM SomeOtherTable
WHERE 1 = 0


Both would return the value 0 rather than an empty result set.

If you add a GROUP BY it then becomes a vector aggregate and returns one row per group (So would return nothing in the above examples) - See Vector and scalar aggregates

Your first query just consists of a scalar aggregate with @i added to the SELECT list so you get the single row. The second query has no aggregates of any kind and nothing matches the WHERE so you get no row.

Further Reading

Fun with Aggregates - Paul White