Milestones and can be used to manage a multi-task deliverable. They exist below the project level within the project hierarchy, and this means you cannot have a milestone be part of multiple projects.
A milestone can be used to show the status of each task that is associated with it. Milestones are completely optional. We almost never use them in our maintenance and retainer work, but almost always use them for our project work. If you happen to do Agile development, milestones can be used for sprints.
Milestones have a scheduling component where future tasks and milestones can be rescheduled when a milestone is moved. Say, for example, the first deliverable runs late you can move the milestone and then move all of the upcoming project milestones and tasks.
Milestones can be used to manage subtasks where the tasks attached to the milestone act as subtasks. If you want simple check boxes to check items off while you work, the advanced editor can be used to create a list of subtasks as a task summary.