If you are asking this question it’s pretty safe to say that you are new to Drupal. After you’ve been dealing with Drupal for a while it’s easy to start thinking everyone knows what you are talking about when you start throwing out terms like “Drupal Modules” and “Drupal Themes”, but the truth of the matter is that to the average Joe on the street this all sounds like gibberish.
A module is like a small piece of software that expands the capabilities or alters the behavior of Drupal is some way. Drupal itself is software and it acts as the parent software to the modules which you could think of as children. Rather than leaving developers to hack together random systems that may or may not all work with other modules in the end, and rather than having the main Drupal core be altered on each website, the creators of Drupal set up a system of functions, variables and naming conventions that has become known as the Drupal api.
There are over a thousand contributed modules available for free on Drupal.org. But often those modules were made for someone with a different set of needs than you. Fortunately, if the module you need doesn’t exist you can build it. Learning the Drupal api takes some time, but once you get it down it greatly speeds up the process of creating dynamic websites with customized functionality.
If on the other hand you need a module next week and you don’t know the difference between an HTML tag and a global variable, then you might be better off hiring someone to write your module for you. There are lots of people who offer the service of creating customized modules (myself included).
One recommendation if you do go shopping for a developer. Don’t use third-world out sourcing companies. I know it’s tempting to go for the lowest bid, but programmers that are willing to work for under minimum wage are not likely to leave you with well written code. Anyway, that’s my opinion on the matter.