well on point 1) there is a microsoft page with codo on how to do it...
including touch screens...
2) joysticks are pretty much standardized... min testing needed.
3) put it on a test server... thats what they are for....
4) yes a joystick can control the ret,,,, why change it? its silly the mouse does now but no reason to change it ,,,
as for the rest ....
Joysticks have a generic handler in windows which would be the best way to implement... the mouse does as well...
how do you thing 4-6+ button mice are used in games...... they dont code for each type that stopped with DX long ago.....