How will the order of operations in this query affect my results?
Your assumptions are almost correct.
The order of events:


Build table from FROM list


Apply join conditions and filters in WHERE clause.

GROUP BY / aggregate functions
Window functions
ORDER BY
DISTINCT ON (has to match leading columns of ORDER BY)
LIMIT (not in your case).


Window functions operate logically independent of the ORDER BY clause. But there are synergies for performance if both use the same sort order.

There is not enough information to tell whether this query does what it is supposed to do.

Related answers to shed some more light on the topic:  


How do I get the aggregate of a window function in Postgres?  
PostgreSQL: running count of rows for a query 'by minute'