A coenzyme is an organic molecule (not a protein) which transfers chemical groups around, e.g. ATP which is a carrier of phosphates in metabolism.
A cofactor can include both an inorganic and organic component. Example is the heme proteins, which consist of both a tetrapyrrole and iron. A chemical molecule needed for the enzyme to work. Some cofactors bind v.tightly to the enzyme whereas others are loosely-bound - these are sometimes termed coenzymes as they almost act like a substrate.
Hope this helps... good luck