I would use the IN() subquery to exclude records, it is simpler to read the TSQL. However both seem to cost the same CPU time.
Be careful with large tables.
-- create temp tables
DECLARE @t1 TABLE (col_a NCHAR)
DECLARE @t2 TABLE (col_b NCHAR)
INSERT INTO @T1 (col_a) VALUES ('A')
INSERT INTO @T1 (col_a) VALUES ('A')
INSERT INTO @T1 (col_a) VALUES ('A')
INSERT INTO @T1 (col_a) VALUES ('B')
INSERT INTO @T1 (col_a) VALUES ('B')
INSERT INTO @T1 (col_a) VALUES ('C')
INSERT INTO @T1 (col_a) VALUES ('C')
INSERT INTO @T1 (col_a) VALUES ('C')
INSERT INTO @T1 (col_a) VALUES ('D')
INSERT INTO @T1 (col_a) VALUES ('E')
INSERT INTO @T1 (col_a) VALUES ('E')
INSERT INTO @T1 (col_a) VALUES ('E')
INSERT INTO @T1 (col_a) VALUES ('E')
INSERT INTO @T1 (col_a) VALUES ('F')
INSERT INTO @T1 (col_a) VALUES ('F')
INSERT INTO @T1 (col_a) VALUES ('G')
INSERT INTO @T1 (col_a) VALUES ('G')
INSERT INTO @T1 (col_a) VALUES ('G')
INSERT INTO @T2 (col_b) VALUES ('A')
INSERT INTO @T2 (col_b) VALUES ('B')
--simple version to read
SELECT DISTINCT col_a FROM @t1 WHERE col_a NOT IN (SELECT col_b FROM @t2)
-- more complex
SELECT DISTINCT col_a FROM @t1 LEFT OUTER JOIN @t2 ON col_a = col_b WHERE col_b IS NULL