This is by no means a complete answer as a complete answer would require far too much detail. This should be a comment, but it's still too long to be so. Hopefully this will be enough to give you a start on doing the research yourself.
The most important thing to note is that module.exports and functions are two concepts in javascript that aren't tied directly to each other.
module.exports is a way of declaring that something in the file is accessible when imported into another file. It doesn't have to be a function.
module.exports = ""; //exports a string
module.exports = {name:"john"}; //exports an object
module.exports = 3.14159; //exports a number
functions are some of the many "things" in javascript. Broadly, their purpose it to take something and do something with it. There are primarily two forms:
function(){ }
and
()=>{}
You can learn more about the difference between the two forms here: http://2ality.com/2012/04/arrow-functions.html
There are also asynchronous functions which are functions that are preceded with the keyword "async" and allow processing to happen in the background. You can learn more about asynchronous functions here: http://2ality.com/2016/02/async-functions.html.
I'm not affiliated with 2ality.com, but it is a really good resource.
Good luck!