Así explicado por muy encima.
Una join simplemente consiste en realizar el producto cartesiano de varias tablas, te devuelve todos los registros de una tabla, combinados con todos los registros de las otras tablas con las que se hace la join.
Si no quieres absolutamente todos las combinaciones, tienes que poner un WHERE, donde pongas una condición para que se devuelvan solo ciertas combinaciones.
Digamos que INNER JOIN, OUTER JOIN, y LEFT JOIN, son como "wheres predefinidos", es decir, te devuelven ciertas combinaciones sin que tengas que construir tu propia condición del WHERE.
El significado exacto de cada una, pues es algo que puedes leer en mil sitios.