What are different types of functions in Julia and what are the differences between them?

Linking this thread on all the ways to define functions in Julia and related article, which may help answering the OP title question.