i think those st-link dongles has access to the reset pin. in fact i tend to use 'connect under reset' to get pass write protected (debug pin disabled) boards.
but i'd think uart with uart and boot0 is a nice alternative. the reason is that you can use it 'arduino like' i.e. to flash the sketch set boot0, toggle reset.
then it runs in 'normal' mode as a usb-serial interface.
the thing is there is still a lot of merits to use usb itself, hence this is useful as a 'fall back'.
as for usb, i think we are not really exploring the depths of it. i'd think in part usb protocols is kind of complicated and often it takes sniffing packets to decipher the packets. and with usb one often need to deal with complicated state machines to keep state of the connection. the extremely verbose but not necessarily straightforward and often incomplete usb specs that you can find on usb.org doesn't help.
e.g. for usb mass storage, if you read the bulk only transport specs, it would look easy. the trouble is the specs totally miss out mentioning that in the real world it is SCSI over USB, i.e. you need to decode the SCSI commands instead.
and the highly opaque SD cards commands doesn't help if one wants to implement a usb-sd card controller
similarly HID is just as verbose and hard to understand.
but usb is still an important 'technology' that i'd think we'd need to adopt which would make a stm32f* a true generic usb device. i.e. usb to anything usb-serial, usb-irda, usb-ethernet, usb-bluetooth, usb-serial-gps, usb-nfc, usb-audio, usb-camera, usb-video, usb-hid keyboard, usb-hid mouse, usb-hid vr controller, usb-hid *, usb-mass storage et. al.
one weird wacky thinking is that with usb-hid, one can make 'artificially intelligent' (aka 'smart') keyboard and mouse. imagine make the keyboard & mouse do machine learning so that it does prediction, would that keyboard or mouse eventually do 'move ahead' or even 'move autonomous'? an interesting and probably unexplored arena
another irrelevant note though, these days parallel ports and serial ports are missing from computers, almost all of them. usb for now is still there, but it seemed there is a movement to usb C, not sure how soon that adoption would become widespread. the 'lost' of parallel ports and serial ports makes 'old technologies' like linux-cnc (http://linuxcnc.org/
) (PC does GCODE intepretation and control) a little less relevant, today's world is literally dominated by micro-controller driven G-CODE controllers e.g. GRBL, and all those 3d printing firmwares (Marlin, Reprep, Repetier etc)
stm32-style usb controllers may be a revolution in the evolution, we are in the age of the software usb device, a usb device where its role is determined by the firmware you install on it ! (we are already there with stm32duino)