Would you recommend programming the PIC32 on an external board? Or
build the whole thing on one PCB?
Putting them on the same board makes the construction simpler and cleaner, but putting the MCU on a separate board could make it easier to program.
For prototypes I sometimes mount the MCU on an SMD to DIP converter (possibly with crystal and other essential parts) which is plugged into the main board. Then I can remove the MCU module and program it stand-alone, which eliminates potential issues with interference from other devices on the board. If I decide to make a 'production' board the MCU module can be used in other projects.
However if the design is unlikely to need many hardware changes during development I prefer to just make one 'final' board with everything on it, as this saves time and money. Then I include an ICSP header, which may require jumpers to isolate other parts of the circuit while programming.
I couldn´t find the capacitor size needed for the crystals. From the
datasheet I deduced that I can dimension the part between 4 and 10
MHz.
Capacitor values depend on the crystal. If you don't need extreme accuracy then 'standard' values (eg. 22 pF) should be OK provided it oscillates reliably.
Do I need two crystals (SOSCI and OSC1) or is the one for SOSCI
sufficient?
One crystal should be enough. The primary oscillator is required for normal operation. In this application you don't need low power or a real-time clock, which are the main uses of the secondary oscillator.
And if I´m using the PMP ports (PMD & PMA), how do I program the
microcontroller?
If programming pins are shared with the Parallel Master Port then you may need jumpers to isolate the MCU from the disk controller during programming. However the MCU has several programming pin options, so if you juggle it right you might be able to free up some pins or share them with signals that don't interfere.