So does that mean any time I have a 'nested' defun I should also name it as a local (as good coding practice)?
Yes, that's right. Let me see if I can explain without muffing it up....
If you have a c:function that requires some subfunctions that are designed to be used only for that c:function, then I personally prefer to embed them inside the c:function and declare them local.
The reasoning is that by embedding these particular dedicated subfunctions inside the c:function and delcaring them local, I know that they are used only for that c:function and I don't have to worry about them over writting, or being overwritten, by some other lisp routine that happens to be lurking out there, and happens to have a function with the same name.
Thus it is a good practice to declare local variables and local subs, so that when the routine ends, it leaves the lisp environment squeaky clean.
One downside however, to embedding local subfunctions inside c:functions is that every time the user invokes the c:function, those subs are reloaded. That's sort of a waste of time to continually reload the subs, but with the fast PC's we all have now, the time usually isn't perceived by the user. If on the other hand I had some huge subfunction that took a lot of time to load, then I might locate that fat sub outside of the c:function and just call it just like a toolbox function.
For those subfunctions that might be useable for other routines, then I always put them in a toolbox lisp file which I have setup to load automatically when the drawing is opened. These toolbox subs are not declared local.
Does that help?