When I think of a Web site, I think of a series of pages accessed using the traditional request/response model of the Web over HTTP(S) to transition from page to page. Some Web sites use AJAX to make them a little more dynamic, such as by preventing the page from needing to be reloaded to show new content.
When I think of a Web application, I think of a Web site that uses certain tricks to circumvent the limitations of the Web's traditional request/response model and become something that is much closer to the type of programs one would expect to see on the desktop.
When I think of a Web site, I think of marketing. I picture something that may have a web form, or a blog, or content that I would just read. I don't think of a Web site as something interactive, something that would take input from me other than just clicking on links to other pages.
When I think of a Web application, I think of something that requires just as much from me as I expect from it. I picture Comet-based tools for increasing sales, like live chat software, or CRM systems for managing customer data, or some kind of interactive software on the Internet.
In summary, a Web application can be thought of as a cloud-based version of something you might see on the desktop.
UPDATE: Web applications also typically involve tracking users of the system in great detail. They'll most likely require a username and password, but not always.
A great example of a Web application is this site, Programmers SE. What's most interesting is that these types of applications go beyond what you would expect to see in a traditional desktop application in that users from all over the world are able to interact with it, access the content, and update it in semi-real time.
Best Answer
Already lots of impressive references in the comments! But let's try to do it short:
Module: a self-contained piece of software (e.g. types, data structure, functions), that can be combined with other modules to construct a more complex software.
References that support this definition:
All these examples (as well as future C++ modules), fit in this proposed definition.
Plugin: a plugin is a ready to use software component that can be added to an existing software to change adds features.
References and arguments that support this definition:
Extensions: ??
I think there is no consensus around the term extension. Personally, I see it as a synonym for plugin. But the notion of dynamic/ready-to-use is not at all suggested by this term, so that it could also mean an extension at compile/built time. Some people might even use it for a tailorised version of a software.