In addition to what others have already said, I'll try to answer it from a purely practical point of view (this is also a variant of the overlap-add technique).
If your FFT length is 2048, then an overlap of 1024 (50%) means that you have twice as many analysis (FFT) frames (as compared to the number of frames without any overlapping). A 512 samples overlap (75%) means 4 times as
many frames and so on.
The purpose of overlapping is primarily to reduce the effect of windowing. Most windowing functions (e.g Blackman, Hamming etc) are taper-shaped, which means that they drop to 0 (or close to 0) near the frame edges. This, of course, affects FFT results and
we may lose some important information (e.g. transients).
So to reduce this negative effect of the windowing, we use overlapping. The basic idea here is that we can average FFT results form overlapping frames and thus obtain a better frequency representation of
our time-domain signal. The actual frequency resolution is still the same as without overlapping.
As an example, let's say we use 1024 samples for the FFT and we have a 50% overlap (512 samples). We can average 3 overlapping frames to compute the final (averaged) magnitude values
M_avg[frame][i] = (M[frame-1][i]+M[frame][i]+M[frame+1]]i])/3 ; // i is just a bin index--in this case the bins range from 0 to 512
So, to compute the magnitudes for, say, frame #5, we average magnitudes from frames #4, #5# and #6 and divide by 3 (the number of averaged frames)
There are other use case for overlapping but the one described above is probably used the most.