Salesforce does not complete the milestone automatically.
You need to run a code to complete the milestone. It is possible multiple milestones are run simultaneously if you don't complete other ones.
Code to complete milestone is as follows:
public class MilestoneUtils
{
public static void completeMilestone(List<Id> caseIds, DateTime complDate)
{
List<CaseMilestone> cmsToUpdate = [select Id, completionDate
from CaseMilestone cm
where caseId in :caseIds and IsCompleted =False
and completionDate = null limit 1];
if (cmsToUpdate.isEmpty() == false)
{
for (CaseMilestone cm : cmsToUpdate)
{
cm.completionDate = complDate;
}
update cmsToUpdate;
}
}
}
Secondly milestones can be initiated based on certain values on Case record. Let's say you have written a logic, if case status is in-progress and case type is "Accounting" then new milestones gets created.
So, during creation, system will not look for any previous milestones running or not.
Refer Milestone Recurrence Types