The best way to setup the X-55 seems to be using the Saitek software to setup the modes. It's a pain, and there are bugs. One bug that I experienced (and others here have too) is that sometimes when applying a profile, it causes a BSOD. It also, adding insult to injury, wipes out all of your settings in the file you were working on. To mitigate this, I backup whatever profile I am using on Dropbox. I may look into symbolically linking the default profiles directory to my Dropbox folder (assuming Dropbox will follow, anyway). Because Dropbox has versioning if one file is wiped out you can go back to previous versions.
Anyhoo, So you clear out all the button settings in DCS and map the buttons on the HOTAS to keyboard commands. Seems lame and hackish, but there's no native support for the mode switch in DCS (or any game it seems). But, the Saitek software is slightly easier to use than the DCS configuration menu. The best way to configure seems to be to generate the HTML of the aircraft you want, and use that to assign controls in the Saitek software, so you don't have to have the game open all the time.
As for saving profiles in DCS, when you click on a column and then hit 'save profile' it saves the buttons and the axis configuration for the selected controller column, for the selected aircraft only (although I tested only between 'All' and 'Axis commands' so perhaps if you save when in a more specific button category it only saves the buttons from that one).
As a software developer, I'm very keen on making my own config software for DCS that will make using a Saitek controller a bit more manageable, as it takes forever to setup an aircraft. Luckily a lot of the aircraft use similar controls, for the simple flight models, anyway. It is very possible since each program uses an open text format for configuration. Plus, it could generate an image like the ones I see posted here that are apparently created manually (ugh!). I tried looking at the Saitek software in a dependancy walker, but couldn't profile it to see any runtime bindings (possible x64/x86 problem, a x86 VM might work). I didn't immediately see any fancy DLL calls to apply the profile but I couldn't get a complete picture so that doesn't mean anything.