Site definitions are created by doing custom development, usually first copying an OOB template. Site templates are created by saving a site as a template in the GUI. There are advantages/limitations of each: Site definitions have to be updated by a developer or administrator with some XSLT or CAML knowledge...