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
\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