Regarding localising of variables,
I don't think the order matters (don't quote me on that), but I normally order them in the order they are defined in the program.
Just look at it like this, if any values are bound to the symbols that are localised, those values will be set to nil upon the program commencing and completing.
As an example:
(defun c:test ( )
(setq a "Hello")
(printer)
(princ))
(defun printer ( )
(princ a)
(princ))
^^ "a" remains global.
(defun c:test (/ a)
(setq a "Hello")
(printer)
(princ))
(defun printer ( )
(princ a)
(princ))
^^ "a" is localised in the main function, and hence will still hold its value in the sub-function, but nil after program completion.
(defun c:test (/ a)
(setq a "Hello")
(printer)
(princ))
(defun printer (/ a)
(princ a)
(princ))
^^ "a" is localised in the sub-function, hence its value is set to nil upon invoking the sub-function, hence the above will print nil.
Hope this helps,
Lee