All three of these words mean "to start", but what's the difference between them and where are they used?
始まる is an intransitive verb. Hence, it does not have a direct object, ex "Something starts ".
始める is a transitive verb. Hence, it has a direct object, ex "Someone starts something".
開始 is a noun. You can make it into a verb by adding suru.
This is an extension of Dono's response.
開始 contains two kanji, 開く meaning to open and 始まる／める which we know from Dono means begin. Not surprisingly, 開始 can take on either single character in certain circumstances. To demonstrate this I have posted some examples of how 開始 gets used as a verb with する from the Apple dictionary below. In general compound verbs like this get used in more formal/written Japanese.
Note: I agree with Taylor's comment, fair question but if this is the first time you have come across this kind of thing then I should take this as one example and get ready for lots more cases like this or other variations.
かいし【開始】:(an) opening; a beginning; commencement
開始する｜begin; start; ｟文語｠ commence