Joe,
I do believe that you have the gist of it. This is really about looking at different aspects of the same thing. Here is me repeating much of what has been said above:
The frequency of a 'periodic function' is not defined by the zero crossings, but instead by the repetitions of the same shape. With something simple like a sine wave or a square wave, the repetitions of the same shape happen every other zero crossing. But with some sort of complex wave shape, you could have many zero crossings before you repeat, or with something simple like an AC voltage added to a larger DC voltage, you might have no zero crossings at all.
Any reasonable waveform can be considered as a sum of simpler waveforms. Each of these simpler waveforms will have its own frequency. So you can have a periodic function which has a _single_ frequency. But you could consider this periodic function to be a sum of different sine waves, each with its own frequency. As a very weak analogy, a trip North-East of 1 mile could be considered the _sum_ of a trip East of 0.71 miles and a trip North of 0.71 miles.
Similarly, a 60Hz _square wave_ could be considered the _sum_ of a 60Hz sine wave plus a 180Hz sine wave of 1/3 the amplitude plus a 300Hz sine wave of 1/5 the amplitude plus a 420Hz sine wave of 1/7 the amplitude.....These higher frequency sine waves are 'harmonic components'.
When you ask what causes harmonics, you need to first specify: voltage or current harmonics. Current harmonics are caused by any device that does not draw current exactly in proportion to the applied voltage. Power electronic devices that only conduct for a portion of the supply voltage waveform are a perfect example. Power electronic loads can create really ugly current consumption patterns, where the harmonic components are larger than the fundamental or base frequency component. These are current harmonics which can cause neutral overloading.
But the current harmonics will interact with the supply, and change the shape of the supplied voltage waveform. This changed voltage shape is called voltage harmonics, and it can cause interference with other loads on the system, even perfect sinusoidal loads.
-Jon