Extracting multiple signals to baseband
I would do it like this:


Start with a 2 MHz signal containing up to 10 FM stations. In practice it will contain maybe three or so.
Identify the carrier frequencies of each station; call them f0 to f9. These are the frequencies in your downconverted 2 MHz signal, not the original carriers.
Design 10 200kHz-wide bandpass filters centered around each f0:f9. Filter the 2-MHz signal with each of these filters to separate each individual FM carrier.
Downconvert each FM carrier back to baseband. To do this, multiply each carrier by the signal exp(-j*2*pi*fi*t), where fi is the carrier frequency and t is time. This will bring each FM signal to baseband.
Demodulate each signal using a regular FM demodulator.
Send each resulting audio signal to its destination.


An alternative procedure would swap steps 3 and 4:


Frequency-shift the entire 2 MHz signal so that the desired carrier ends up at 0 Hz.
Apply a low-pass filter to remove all undesired frequencies.


The advantage of this method is that you need to design only one low-pass filter instead of 10 band-pass filters. However, you need to be careful that you don't introduce aliases that can affect the frequencies you want to recover. The reason is that a 2-MHz signal sampled at 4-MHz doesn't have any "headroom" at the ends; any time shifting will introduce aliases. Just make sure these don't end up in the passband of your low-pass filter.

So, you need to: design bandpass filters (or one low-pass filter), generate complex exponentials, and demodulate the FM signals. You can do this Matlab, Liquid DSP, GnuRadio, or any number of other numerical/radio programs and languages. I think your largest constraint will be computer power, unless you only have a couple of FM stations.