Seriley said:
2) The scope of this variable does not expand to include a script that requires this module
That bit is right. The idea of using "local" in modules is to isolate their effect from the rest of your scripts.
Another thing to look at is the module function. This sets up a special environment for your module so that even non-global variables are protected from being accessed in global namespace of the script that requires it. Except, as a sub-variable of the module itself.
Also it protects the caller global namespace from access unless you take extra steps. So if there is a global variable "foo" in your calling script, the module cannot affect it.
So basically using the module function protects you from the module corrupting the main program, and vice-versa.
As an example, look at copytable.lua that comes with MUSHclient.
Now if you load that, and try to access the non-local function "deep" you cannot do so directly:
require "copytable"
print (deep) --> nil
However you can get it as a sub-item of copytable itself, eg.
require "copytable"
print (copytable.deep) --> function: 018942E8