As a UK freelancer working with primarily US clients, I'm often on the opposite side of the arrangement. I personally tend to work with either milestones and/or a 25–50% upfront deposit (depending on the overall size of the project).
To answer your specific questions:
How do I ensure that freelancer I hired delivers? and how do you ensure safety?
Pre-vetting your freelancers is a good start (check they have testimonials, past work on display, multiple means of contacting them), but it's also worth remembering that if you're paying a fair rate, that it's also in the freelancer's best interest to complete the contract.
One approach that I've seen used by a few companies is to work from a shared Github repository, where the code I've worked on gets pushed up as soon as it's complete, and then once they've paid the related invoice, we continue with the next feature.
Of course that won't work for design based projects, however again, small steps like design mockups, initial concepts etc… can be used to give you natural breaks in the project.
Finally, the freelancer you chose may not be the best fit for you or your project and having the option to terminate after a smaller amount of work, might be in everyone's best interests.
A contract may work in US, but internationally chances are thin
Providing you're working with a freelancer in a developed nation then a contact will be enforceable, however even US-US, you'll often find that the amount you'd gain from a settlement/victory in court is not worth the cost of litigating the case.
Contracts are also a last-resort, ideally you'll never actually need one, though you should always have one.
How do I ensure client keeps paying me? What if he vanishes after I complete the project?
If this is a particular worry, escrow services do exist, however they obviously cost money to use. A common alternative is an upfront deposit that is then applied to the final invoice.
Remember that a business contract exists because it benefits both parties, thus, structuring a contract/project in such a way as to provide value to both sides a little at a time should minimise the risk to either party.
If a client does vanish without payment then (depending on the contract) they have likely stolen the code, and as a freelancer you would be within your rights to resell that code and/or remove it from any server to which you have access. You might also pursue a court claim against them although internationally that could get expensive.
However as a general rule I've found being firm but understanding is the best approach and that non-payment has typically been due to accounting screw-ups or cash flow problems and has eventually been simply a late payment.