If you use \newdef\mymacro[0]{...} to define a zero-args macro (i.e. if you give the optional [0]), the macro will require that it be followed by an open brace, even though it isn't reading an argument. This ensures that the macro will not gobble spaces following it. With \newcommand\foo{foo}, "\foo bar" becomes "foobar," losing the space (for technical but sound reasons; ask a TeX person if you want to know). "\foo{} bar" will not lose the space; \newdef\foo[0]{foo} will force it to be called like this. (Or "\foo{blah} bar" which becomes "fooblah bar.") \newdef\foo{foo} will not cause \foo to force the braces.
latex2e has expanded \newcommand so that it has a *-form and can take a second optional argument; these capabilities have not yet been matched by \newdef.
\renewdef is to \newdef exactly as \renewcommand is to \newcommand (i.e. you use \newdef\mymacro if \mymacro is not yet defined, and \renewdef\mymacro if it is). You can freely mix them --- e.g. \newcommand\mymacro, then \renewdef\mymacro to override, or \newdef\mymacro, then \renewcommand\mymacro to override.
The use of \newdef at all is optional, but highly recommended. Template-supplied code uses \newdef to define almost every macro that GMs are expected to use. If you decide you really don't want this, you can either replace them all with \newcommand, or do "\let\newdef=\newcommand" in your custom.sty so that \newdef is exactly the same as \newcommand.