Funds can be escrowed for the full project or one milestone at a time. It's important to note that the contract price means nothing--only the funds in escrow are protected at all. So, if you agree on a price of $500 but the client escrows $100 for the first draft, that's the only amount of money you'll be able to fight for.
Once the funds are escrowed, you complete the milestone (being careful not to do work beyond what's funded) and submit it using the "submit work/request payment" button. Many freelancers make the mistake of sending through messages for review, but that's not necessary--when you formally submit, the client has up to 14 days to review and request revisions. If the client chooses to actively approve, funds are released on approval and go into a "pending" status for five days, after which they become available to you. If the client does nothing, the milestone auto-approves when the 14 day review period expires (but you still have the five day hold period after that).
The most important thing to understand about this process is that escrow doesn't actually provide any protection to the freelancer unless the job is large enough to warrant paying a $291 arbitration fee. If a dispute arises, Upwork will attempt to facilitate an agreement. But, if you can't reach an agreement, there are only two options: the freelancer has to put up $291 for arbitration, or the client gets the money back. And, if the case actually proceeds to moderation, you don't get that $291 back, even if you win. So, if the milestone is $100, it's a losing proposition to arbitrate.
The one scenario in which you can get paid AND get your arbitration fee back is if you pay the fee and then the client opts not to--in that case, you get the funds in escrow and your fee returned. But, that's always a roll of the dice.