The differences come from the fact that:
「名前{なまえ}」 is an originally Japanese word while
「名称{めいしょう}」 is a Sino-loanword.
Formality:
For the reason above, 「名称」 is more formal, academic and technical than 「名前」. Think about "chat" vs "conversation", "deep" vs. "profound", etc. in English. In both Japanese and English, the big words have mostly come from "somewhere else".
Meanings:
「名称」 means the name of a thing or organization -- almost anything, really. The only thing it does not mean is a personal name.
「名前」 can mean any kind of name including personal names.
For the particular meaning of "personal name", we use 「氏名{しめい}」 to sound more formal. We never use 「名称」 for that purpose.