Under ordinary circumstances, filter conditions can be specified either in WHERE or JOIN clauses. I tend to place filters under WHERE unless OUTER JOIN precedence could be affected (see below) or if the filter is very specific to that table (e.g. TYPE=12 to specify a specific subset of rows in the table).
On the other hand both ON and WHERE clauses can be used to specify join conditions (as opposed to filter conditions). As long as you are using only INNER joins, it still won't matter which you use under ordinary circumstances.
If you are using OUTER joins, however, it can make a great deal of difference. If, for example, you specify an OUTER JOIN between two tables (t1 and t2) but then, in the WHERE clause, go on to specify an eqijoin relationship between the tables (e.g. t1.col = t2.col), you have just converted the OUTER join to an INNER join! This is because WHERE can be used to specify an equijoin (or maybe even OUTER join, depending on the version, using the deprecated *= syntax) without using an ON clause, and when WHERE indicates an inner equijoin between tables, it overrides an OUTER JOIN (if present).
The original question was about filters, where the type of join often should not be an issue, but a join can also act as a filter and in those situations the placement of the join condition certainly can matter.