How to program multiple STM32Fs on same PCB
If hardware design is done correctly and assuming UART is used for programming, the steps would be roughly as follows:


The main CPU resets a selected MCU.
The CPU then brings the required BOOT pins to an appropriate state and releases the reset.
The MCU bootloader starts and waits for data to come in on the appropriate UART line.
The CPU send the binary data over the UART and resets the MCU when done.
The MCU runs with a new firmware.


Here's an image showing bootloader selection for STM32F10xxx parts:



The same steps would be repeated for each MCU.

The main processor can be updated in numerous ways, but it usually goes like so:


Firmware is downloaded into a local storage (FLASH, RAM, SD Card etc.)
The CPU reboots and the bootloader discovers the upgrade code.
The CPU bootloader reads the data, checks that the binary is valid and programs the appropriate FLASH sectors.
The CPU reboots itself again and loads with the new firmware.




Update.

Based on your current hardware, you'd have to execute the bootloader by jumping to the appropriate memory address (see page 20 of AN2606). I don't know a great deal about this, but your hardware designer should be able to figure it out. Not having the control of the reset line is a bit of an oversight though.