They are not the same.
Putting the compound condition on the join tells the database to evaluate BEFORE the cartesean is generated. So in the 1st query. All records from A will be returned and those records which match A in B on ID will be returned if the name is not null.
In your second query the cartesean is generated first and then the not null evaluation occurs.
Expanding on the data provided
A:
ID name
1 xxx
2 yyy
3 zzz
B:
ID name
1
2 Bob
1st example would return:
1 XXX NULL NULL
2 YYY 2 BOB
3 ZZZ NULL NULL
All are returned as you indicated you wanted ALL Records, and only those records from B where the name wasn't null. but since the Null value identification occurs PRIOR to the Cartesian, only record 1 would be eliminated from table B But since it's in the section A where you wanted ALL records it would be included in the results.
2nd query would return
2 YYY 2 BOB
1 and 3 get EXCLUDED because Name is null, and this evaluation occurs AFTER the cartesean is generated.