Sorry for the newbie question, but what are header files? What should they contain? Just classes and definitions?

If possible, header should contain a skeleton for the desired Object.
For example a header might contain a class skeleton named Car, and you might define
the actual implementation of Car in a different .cpp file. Another example, you
might declare some functions in a header, but do the actual implementation in a different .cpp file.

// this header defines the skeleton for the BestClassInUniverse
class BestClassInUniverse{
  void doTheBestThingInUniverse(); //skeleton
//actually defines the implementations
  //some  top secret code.