Which areas of expertise do you need to know about to create a flexible software synth?
Signal processing? Sound engineering?
You need to understand sound sources (oscillators, noise generators, and samples), modulation (LFO in particular), sound shaping (envelopes), and then signal processing (read: math and audio physics). And honestly I'm being really high level here. There are a million details within each thing I mentioned. Its not really difficult, but I think it does require a lot of time and knowledge (like, years)
Oh and you'll need to learn C and C++ (programming) too. Unless you want to build an analog synth, which is basically all the same exact thing but using physical items to create and manipulate the sound (as opposed to a computer). Edit: filters are worth mentioning too (especially for subtractive synths)but technically that would fall under "signal processing"