They have all in common, that they define a new command, but the precondition and behavior differs a bit:
\renewcommand
works only if the command is already defined: it's a redefinition
\newcommand
doesn't work if the command is already defined: so it's a completely new definition
\providecommand
works like \newcommand
, but if the command is already defined, the (re)definition is ignored
\renewcommand
and \newcommand
would throw an error, if the condition is not fulfilled, to ensure clean programming, so you don't accidentally overwrite existing commands or try to redefine one which doesn't exist.
\providecommand
may be helpful, if the same code would be used in several documents. If you would use it, you should be aware that it might have no effect. But using it you can avoid compile time errors.
For all commands exists a starred version. To see the difference, have a look at:
If you really don't want error checking, you could use \def
, see: