\newlength is the LaTeX2e version of \newskip. It has extra check to avoid redefinition or illegal name. In LaTeX2e, it is defined
\def\newlength#1{\@ifdefinable#1{\newskip#1}}
For example,
\newlength\foo % OK
\newlength\foo % redefinition ERROR!
\newlength\endbar % ERROR: \endbar is illegal command name in LaTeX2e.
% It is reserved by LaTeX kernel to define bar environment together with \bar
\newskip only allocates a new skip (glue, or rubber space) register. If you use low-level TeX command \newskip instead, no error message will be shown.
You should always use \newlength rather than \newskip in LaTeX.
\newdimen is another low-level TeX macro that allocates a new dimension register, it is different with \newskip. They have different meaning. For example,
\newdimen\rigidlength
\rigidlength=2pt % or \setlength{\rigidlength}{2pt}
\newlength\rubberlength % you cannot use \newdimen here
\setlength{\rubberlength}{2pt plus 2pt minus 1pt}