What does [WEAK] mean in STM32 startup assembly code?
It says the implementation of the function should be weakly linked (as opposed to strongly linked, which is the usual).

This allows providing a "fallback" implementation of a function, in case no other (strongly linked) is found.

This is often used for default interrupt handlers in bare-metal MCU frameworks. This way, when you implement an interrupt, you just have to write your function, without having to remove the default one from the sources, and the linker does the job.

See https://en.wikipedia.org/wiki/Weak_symbol