Usually files with the extension .def collect long lists of similar definitions, that would make a .sty file long and unreadable, or that can possibly be shared with other packages.
If tex packagename.ins creates a .def file, then this is part of the package structure and mustn't be omitted.
A typical example are the <encoding>enc.def files, such as t1enc.def loaded by fontenc:
\ProvidesFile{t1enc.def}
[2005/09/27 v1.99g
Standard LaTeX file]
\DeclareFontEncoding{T1}{}{}
\DeclareTextAccent{\`}{T1}{0}
\DeclareTextAccent{\'}{T1}{1}
\DeclareTextAccent{\^}{T1}{2}
\DeclareTextAccent{\~}{T1}{3}
<...>
\DeclareTextSymbol{\NG}{T1}{141}
\DeclareTextSymbol{\OE}{T1}{215}
\DeclareTextSymbol{\O}{T1}{216}
\DeclareTextSymbol{\SS}{T1}{223}
\DeclareTextSymbol{\TH}{T1}{222}
\DeclareTextSymbol{\ae}{T1}{230}
\DeclareTextSymbol{\dh}{T1}{240}
\DeclareTextSymbol{\dj}{T1}{158}
\DeclareTextSymbol{\guillemotleft}{T1}{19}
\DeclareTextSymbol{\guillemotright}{T1}{20}
<...>
where having the long list in a separate file makes it more easily maintainable and searchable. Similarly inputenc uses .def files for lists of pairings between input characters and their connected output.
Some other packages use some .def files for "context dependent" code. Examples are graphics/graphicx and hyperref that put the engine dependent code (for latex/dvilualatex, pdflatex/lualatex and xelatex) in .def files such as pdftex.def and dvips.def (graphics) or hpdftex.def and hdvips.def (hyperref).
Other packages, notably bidi, xepersian or minitoc, use .def files to load code depending on what packages are loaded in the document.
In some cases perhaps an extension such as .sto ("style option", modelled after .clo used by the standard classes) might have been preferable, but tradition has its influence. So long as the names are unique, the extension used is irrelevant.
.defwill be needed, and so you should install them. – Joseph Wright May 13 '12 at 14:01