Master-detail ties a detail record to a required parent and gives that relationship lifecycle and ownership consequences. Supported parent records can summarize the details through roll-up fields. A lookup is looser: the child may have an independent owner and an optional parent, according to its configuration.
A junction object represents a many-to-many relationship by holding two references, often master-detail where the requirements fit. The junction is a business record in its own right, so give it a clear identity and any attributes of the relationship. Consider orphan prevention, parent deletion, access inheritance, and reporting before choosing the type. A convenient first form isn't enough evidence for a durable data model. These tasks use original scheduling, fulfillment, and membership entities.