Мои предположения: WHERE: сначала выполняется запрос а потом к нему применяется WHERE и отсеивает записи.
ON: Записи из двух таблиц сопоставляются и сравниваются в результат попадают записи удовлетворяющие условию. Если вместе с ON применяется WHERE, то из данного результата с самого начала WHERE отсеивает записи.
USING: работает как ON. Отличается только тем, что можно указать только название поля, которое совпадает в двух таблицах