Technical
The CPC joystick port is (more or less) based on the Atari-standard, for details on the pin-outs (and differences between Amstrad CPC and normal Atari/Commodore ports), see:
At software side, the joystick port is part of the keyboard matrix, accessed via the general purpose I/O port in the PSG chip, which is itself accessed indirectly via the 8255 chip.
Official Amstrad Joysticks
For the CPC+/GX4000, Amstrad seems to have also made Joypads (which work identically as joysticks).
Compatible Standard Joysticks
All Digital Joysticks with only one Fire Button and Direction switches should be usually working with the CPC.
Incompatible Standard Joysticks
Joysticks that do require 5V/GND supply (eg. for built-in auto-fire circuits) won't work on the CPC. Joysticks with 2-3 buttons may also be problematic (in the Atari standard, 2nd/3rd button are wired between POT0/POT1 and 5V). And, in lack of the POT inputs, any kind of analog devices (like Atari paddles) won't work on the CPC.
Y-Cable
The original CPC models have only one joystick port, but can be used with 2 joysticks when using a Y-cable:
The CPC+/GX4000 have two digital joystick ports (which work equivalent to the Y-cable).
Is this true?
Some modification occured, especially for the PLUS range as Amstrad aimed the console market (GX4000) and used a politic of "Exclusive Hardware" like all console manufacturers of the time.
As a result is may be a problem to find proper Joysticks for your PLUS/GX4000 WHAT? The digital joystick should be same as ever? Theoretically, only the new analog joystick port is nonstandard?
Joystick Related stuff... Sega Controllers...
Analog Joysticks
The CPC+/GX4000 additionaly have an Analog Joystick Port.