Milestone dependencies are a visual representation of what needs to be completed in order to start a new phase. Tasks tied to a dependent milestone will lock until the dependency milestone's tasks are completed.
You can set a milestone dependency by editing the dependent milestone in your Milestone view.
When a milestone, (let's say Milestone B) is dependent on the completion of Milestone A, then the tasks tied to Milestone B are locked until Milestone A's tasks are completed.