The answer to the question: "what is the difference between using or avoiding CALCULATE?" is that CALCULATE (and CALCULATETABLE) is the only function to change a filter context. Other techniques do not change the filter context.
The two formulas in the post are not changing the filter context. But the first one computes the average [Revenue] per 'Sales Order'[Sales Order] in the current filter context
The second one computes the average of [Revenue] computed per each row of the 'Sales Order' table, that generally is different, unless 'Sales Order'[Sales Order] was the PK of the 'Sales Order' table.
Also, the approach n. 2 is usually wrong, since it would misbehave if duplicate rows exist in the 'Sales Order' table, since a context transition happens when evaluating [Revenue], therere the measure would use all the duplicated rows matching the filter instead of only the currently iterated one.