Nice question, although somewhat simple. However, the explanation given:
The values in col1 in both the tables is matched against each other resulting in 6 rows for all the SELECT statements.
is slightly incorrect. This statement is true for all of the join types, except the cross join, in which col1 is not matched between the tables; you just get all possible combinations. If table A contained 1,2,3, and table B contained 4,5, the cross join would still produce 6 rows.
I suggest that you submit another QotD similar to this, but with more values in each table, such as table A containing 1,1,1,2,null,null and table B containing 1,1,3,null,null. That would be more challenging, especially with multiple nulls values to consider ("when does null=null?").