Resonance occurs when an oscillating system is driven (made to oscillate from an outside source) at a frequency which is the same as its own natural frequency. All oscillating systems require some form of an elastic force and a mass e.g. a mass at the end of a spring. All oscillators have a natural frequency. If you have a mass on a spring, and give it an amplitude, it will resonate at a frequency:

$f = \frac{1}{2\pi}\sqrt{\frac{k}{m}}$

This frequency is independent of the amplitude you give the oscillator to start with. It is the natural frequency of the oscillator. If you keep giving the oscillator amplitude at this frequency, it will not change the frequency of the oscillation. But, you are still doing work. This energy must go somewhere. The only place it can go is into additional kinetic and gravitational potential energy in the oscillation. If you force an oscillation at its resonant frequency, you add significantly to its amplitude.

Put simply, resonance occurs when the driving frequency of an oscillation matches the natural frequency, giving rise to large amplitudes.

If you were to force an oscillation at a range of frequencies, and measure the amplitude at each, the graph would look something like the following:

There are many types of oscillators, and so practically everything has a resonant frequency. This can be used, or can result in damage if the resonant frequency is not known.