Because they are different queries. Consider the first subquery of those queries. Suppose t2 has one row (col2=10, col3=300) and t1 rows are
(col1=5, col4=100),
(col1=5, col4=300).
In the first query first subquery for the (col1=5, col4=100) row of t1 will return max(t2.col2)==null.
In the second query first subquery for the (col1=5, col4=100) row of t1 will return max(t2.col2)== 10.
And as a result, first query will not return (col1=5,col4=100) and the second will do.