The original condition:
$\mathrm{TBL1.COL1\ IN\ (SELECT\ COL1\ FROM\ TBL2)}$
means:
Keep a $\mathrm{TBL1}$ row if some row in $\mathrm{TBL2}$ has the same $\mathrm{COL1}$.
Option B expresses exactly that:
$\mathrm{WHERE\ EXISTS\ (SELECT\ *\ FROM\ TBL2\ WHERE\ TBL1.COL1=TBL2.COL1)}$
Option A returns the union of values from both tables, including values that occur only in $\mathrm{TBL2}$.
Option C adds another condition:
$\mathrm{TBL1.COL2=TBL2.COL2}$
which was not required in the original query.
Option D is a left outer join, so it also retains $\mathrm{TBL1}$ rows having no match.
Hence:
Answer : $\boxed{\mathrm{B}}$
Note : The primary concept here is still the meaning of $\mathrm{IN}$: membership of an outer value in the result relation produced by a subquery.