Think of window functions as a two-layer operation:
Layer 1: Produce all the rows (FROM, WHERE, GROUP BY, HAVING)
Layer 2: For each row, peek at its "neighborhood" (partition) and compute something
The result of Layer 2 is just another column added to each row. Nothing collapses, nothing gets removed. You just get extra computed values based on context and that context is what PARTITION BY, ORDER BY, and the frame clause define.