I don’t think that there is a significant difference in terms of security between the various output types. Modern input types are more blockspace efficient, but a few wallets still cannot send to them.
P2PKH (aka Legacy)
- Addresses start with
1…
- All wallet software can parse the address format and send to it
- 148 bytes for an input, 34 bytes for an output
P2SH-P2WPKH (aka Wrapped Segwit)
- Addresses start with
3…
- All wallet software should be able to parse the address format and send to it
- 91 vbytes for an input, 32 bytes for an output
P2WPKH (aka Native Segwit (v0))
- Addresses start with
bc1q…
- Almost all wallet software can parse the address format and send to it
- 68 vbytes for an input, 31 bytes for an output
P2TR (aka Taproot (aka Native Segwit v1))
- Addresses start with
bc1p…
- Most wallet software can parse the address format and send to it, but a few services and wallets have not implemented support yet.
- 57.5 vbytes for an input, 43 bytes for an output
If you don’t mind occasionally dealing with a counterparty not being able to send to your standard addresses, I would just generally use P2TR. For more compatibility, use P2WPKH. I would be surprised if someone had a convincing reason to recommend Legacy or Wrapped Segwit today.