Performance tuning across two tables using indexes?
Your first query is also a JOIN, only using the 'old' ANSI-89 syntax, instead of the explicit JOIN clause which was introduced in ANSI-92. 

Most DBMS should treat both queries as equivalent, but you should check with your specific engine by executing both and examining the execution plan.

With regard to indexing, I would recommend that you try a composite index on (id, col_x) for both tables.
I would also try and add a predicate to the WHERE clause:

WHERE table_a.id = ? AND table_b.id = ?


Even though this is logically redundant, and will not change the output as the join already filters out rows where the id is not the same, some query optimizers tend to better use indexes when the predicate is explicit and not implied, as they lack the logic to infer that. Check the execution plan, and you will know.

Happy holidays!