Tl;dr: There are about 4 categories. If you want to support many gamepads simply target the XBox layout. If you want to support all gamepads make sure your game can be controlled with the SNES layout (which is a subset of XBox), and allow the user to remap the controls, and also allow them to map any additional buttons and axes their gamepad may have. Of course this requires you to use one of the many libraries that correctly map a ton of gamepads based on their layout,.
XBox compatible - 2 shoulder buttons & 2 triggers. D-pad (direction), 2 thumbsticks that can be clicked. Front: 4 buttons in diamond shape, "back" and "start". If you support these, you support most gamepads out there.
Warning:
- Users are sometimes unaware that thumb sticks can be clicked, so consider avoiding these buttons.
- Left and Right Triggers are implemented as a single axis instead of 2 independent axes in some drivers, so never allow the player to press both at the same time.
- None of the directional inputs (thumbsticks and D-Pad) may allow precise/fine control by the user, even tough thumbsticks are supposed to do that. Allow users to turn thumbstick half-left to turn at half speed, but don't assume the user has the ability to move a thumbstick half-left .
- Some gamepads don't use A, B, X, Y labels for the diamond buttons. Consider using images instead of letters to let user know which button to press in tutorial and setup.
- "back" and "start" aren't always labeled, are usually hard to reach, and "back" is sometimes labeled "select".
SNES compatible - 2 shoulder buttons. D-Pad (direction), 4 buttons in diamond shape, "select" and "start". If you support these you support pretty much all gamepads out there.
Warning:
- "select" vs "back" button label.
- Uses same A, B, X, Y labels as XBox for 4 diamond buttons, but uses them in different order. Consider using images instead of letters to let user know which button to press in tutorial and setup.
XBox extended - They can do everything the XBox controller does and some more. They are mostly irrelevant for this question, except for the fact that is nice to allow players to use these extra buttons and touchpads. So best allow players to bind extra buttons to useful game functions. And please never disrupt gamepad input just because a gamepad's touchpad is accidentally touched.
SNES extended Some controllers fall in between SNES and XBox, by offering only some extra functionality. They may have quite unusual button arrangements so allowing users to customize the input scheme is important. Same advice applies as in XBox extended above. There is also a significant subset of these controllers that are essentially SNES compatible plus 2 thumbsticks, resp. XBox compatible minus both triggers.
NES - Not in use anymore. Tell customer to buy a newer gamepad.