What are the differences between notch filter & Goertzel?
The Goertzel algorithm allows you to sample the DTFT of a signal with slightly lower complexity than direct computation (still $\mathcal{O}(N^2)$ to produce the DFT but with a smaller coefficient). I think of it as being advantageous in two ways:


If you know the frequency you are looking for (like in telephone dialing systems)
If you only want a small number of frequencies so that computing the FFT and discarding those you don't want is overly computational


Of course if the frequency you are looking for is not a multiple of $\frac{2\pi}{N}$ where $N$ is the signal support, then the FFT won't get it anyways (sans zero padding tricks).

Notch filters, are, well, filters. So their complexity is straightforward. An advantage in some cases is that they can have a non-impulse frequency response (but still sharp over a small concentrated band) so that if you are only sure of a specific region the signal you are trying to detect is in, this is a good way to do some "averaging".

As an interesting aside, Goertzel's original paper doesn't mention directly applications to Fourier analysis (but rather just people who wanted to program trigonometric series), and is less than a single page long)