Predicates: in the WHERE clause or the JOIN clause?
I guess this is one of the "It depends"-moments.
In a regular execution there is no or at least nearly no difference.

Thought it will become more interesting once the queries are more complex.
More complex scenarios are e.g.:


Nested Joins
FORCE ORDER  (Query Hint)


I would have added LEFT and CROSS Joins as well, thought they are already part of your example.

About the "experience in SQL Server normalization" - I'd say, besides looking in the code, there will not be much you can hold your self on. It is often just a "It depends!"