I'm trying to figure out the difference between the two. I think てくれる can be used when talking about others but then why not just use てあげる for others and てもらう for yourself
So the best explanation I've heard for this is actually thanks to the concepts of うち and 外 first, or (in English) it basically depends on point of view.
てもらう can be used to describe anyone receiving a gift from anyone else; when the receiver is the subject of the sentence.
てくれる is used when the giver is the subject of the sentence.
I know this is discussed in Genki textbooks (Genki II) but the best explanation, along with diagrams, I've seen as to how this works is via Tae Kim's and also lingo-app's entry on giving and receiving in Japanese.