There are the author commands, such as \section, \emph and
\times: most of these have short names, all in lower case.

There are also the class and package writer commands:
most of these have long mixed-case names such as the following.

\InputIfFileExists \RequirePackage \PassOptionsToClass

Finally, there are the internal commands used in the LaTeX
implementation, such as \@tempcnta, \@ifnextchar and \@eha:
most of these commands contain @ in their name, which means they
cannot be used in documents, only in class and package files.

Unfortunately, for historical reasons the distinction between these
commands is often blurred. For example, \hbox is an internal
command which should only be used in the LaTeX kernel, whereas
\m@ne is the constant -1 and could have been \MinusOne.

However, this rule of thumb is still useful: if a command has @ in
its name then it is not part of the supported LaTeX language--and
its behaviour may change in future releases! If a command is
mixed-case, or is described in LaTeX: A Document Preparation System, then you can rely on
future releases of LaTeX2e supporting the command.