Modules allow Lua code to be split across multiple files. The codebase of any non-trivial application is going to get large, and having modules allows the code to be organized and keeps it maintainable. When doing OOP, each class can be its own module. Keeping every class in its own file will keep your projects easy to navigate and maintain.
Lua has several ways of creating and loading modules. Only one method is discussed here. Read more about how modules work at http://lua-users.org/wiki/ModulesTutorial