The first thing to do when you want to put some new LATEX commands in a file is to decide whether it should be a document class or a package. The rule of thumb is:
If the commands could be used with any document class, then make them a package; and if not, then make them a class.
There are two major types of class: those like article, report or
letter, which are free-standing; and those which are extensions or
variations of other classes--for example, the proc document class,
which is built on the article document class.
Thus, a company might have a local ownlet class for printing letters
with their own headed note-paper. Such a class would build on top of
the existing letter class but it cannot be used with any other
document class, so we have ownlet.cls rather than ownlet.sty.
The graphics package, in contrast, provides commands for including
images into a LATEX document. Since these commands can be used
with any document class, we have graphics.sty rather than
graphics.cls.