So depending on what your real goal is, it takes almost nothing to get the part to work. for about a buck a board at oshpark you can make a breakout board, the part, and header pins, done. power it from the pins and manipulate boot0 and reset (or power on) to put it into the bootloader mode then use the uart interface to program the part (simple protocol, the different stm32s use different features of the protocol but still easy to implement or probably find an existing tool).
With the f103 part you see:
To be compliant with the USB 2.0 full-speed electrical specification, the USBDP (D+) pin should be pulled up with a 1.5 kΩ resistor to a 3.0-to-3.6 V voltage range.
but say with the f024f part you see
No external termination series resistors are required on USB_DP (D+) and USB_DM (D-); the matching impedance is already included in the embedded driver.
I have not had issues with the usb connector (as silly as it is usb b connectors are cheap and easy to solder, waayy overkill but cheap and easy) D+/D- direct to the part and then an AP2112 to get 3.3 out of the 5V from the usb connector. Bare minimum that will work (plus headers to breakout the part), granted you may want a few more passive components.
With the f024 it supports dfu so using the boot0 pin you can put it in the bootloader and program via usb, no uart required.
For any of these parts you can use the swd interface to program them. The newer STM32G parts have some protection and are likely the future, virgin part you get one shot at a uart programming (start of app flash is erased). And with that program (or via swd) you can change the defaults so that boot0 works like it used to, but I suspect just like atmel (microchip) and the sam-ba bootloader being no more this may be no more and either usb or most likely swd being the only way in. So start to think of swd as being your primary choice over uart for stm32 parts. But depending on the part you can still rely on uart.
So you can toss the blue pill design if you want and do something more minimal, if you want to use the USB interface, then you need to add those resistors and if you want to power the board from the uart you need a 5V to 3.3V conversion solution.
Programming the part is in the documentation that you should have read before asking this question.
At startup, boot pins are used to select one of three boot options:
• Boot from User Flash
• Boot from System Memory
• Boot from embedded SRAM
The boot loader is located in System Memory. It is used to reprogram the Flash memory by using USART1. For further details please refer to AN2606.
And you can dig further to see which USART1 pins are used. Usually PA9/10. and PA13/14 for swd. There are little $5 not really jlink, jlink boards you can find various places search for something like stm32 jlink, little purple, usb-mini b and four pins on the other end for jumpers. The full sized nucleo boards as well as the discovery boards have stlink debuggers on one end which you can use if you remove two jumpers, cheaper that the usb dongle thing which I recommend against.
Can also just use a generic ftdi breakout board that supports mpsse, adafruit has one that is like $15, works great, unfortunately it only exposes one port so you cant do uart and swd, if you find a two or four port one (priced in that range or $5 or $10 more) then you can have uart and swd hooked up at the same time, for overall generic deveopment (uart more for debug than for programming the part).
Minimal non-production prototype you really need nothing to make the part work, power it externally (ftdi breakout board), etc. I usually put a reset and boot0 button with the appropriate pull up/down as needed. Plus an led or two with the appropriate resistor.
The stm32f103 appears to be a very popular part for ST to use on their nucleos and others as the debug end of the board, so you can examine those schematics as well to see what other passives they use for various reasons as you work toward a product.
If you are only using the stm32f103 because you have played with the blue pill, it is a bit of an old part at this point, they have, as mentioned, newer parts with newer features. And wow those are some seriously expensive parts, you can get other parts that do usb for a fraction of that price (from ST), if usb is a requirement.
i2c, spi, uart, etc. those are generally there, not seen an exception under the stm32 umbrella. There are pull ups on the I/O pins if you want additional/external for i2c or spi you can certainly add those, so far I have not "needed" external pull ups for i2c/spi to work.
I have not needed an external crystal/clock for dfu to to work (again not the stm32f103) I generally only use the uart for power and to program the part. You should be able to experiment with the blue pill to not use the external crystal if you end up using that part.
There are popular third party bootloaders as you probably know that you can do arduino like programming of the blue pill you will need either the uart interface or swd on a virgin part to load that firmware then if you dont erase that firmware as with on the blue pill, you can use the programming tools you are used to.
If you have already used the swd interface on the blue pill to program the flash then you are done that is all you need on your board when you make it...(well, plus a solution to pull the boot0 pin)
Be careful this can get pretty addictive, a buck a board or so for the pcb, and you can buy whatever (hand solderable) part you want on mouser/digikey/your_favorite and not be limited by what is available. Granted it takes some cash to get the equipment and stock of pins and passives and such, but in the long run that pays for itself...at the same time it is nice sometimes to just order a $10 board from amazon/mouser/st and plug it in and use it, drag and drop the binary no extra tools/boards...