As clearly explained by the @mr_eclair
what happens in both cases.
Let me tell you an easy way to remember this.
select a.*,b.*
from A a left join B b
**on** a.id =b.id ***and*** a.id=2;
Here the "AND" worked on the "ON" and it provides a condition to the joining criteria.
select a.*,b.*
from A a left join B b
on a.id =b.id
**where** a.id=2;
whereas here "WHERE" provided a condition to all the result.
To put it more clearly,
"WHERE" filter out the result set after finding the result from "SELECT" statement.
"AND" is a condition on joining the two tables.