ben inteso:

SELECT * FROM miatabella JOIN altratabella ON <condizione>

equivale a:

SELECT * FROM miatabella, altratabella WHERE <condizione>

teoricamente sono la stessa cosa, di solito per comprendere un join si parte dalla seconda forma per arrivare alla prima

le prestazioni delle due forme dovrebbero equivalersi... più o meno, con l'unica differenza che la prima forma è più esplicita della seconda e quindi un database potrebbe accellerare di poco le prestazioni usando la prima. Sono mie congetture però

Io uso la prima perché è più chiara e rende il codice più leggibile separando le join dalle condizioni semplici