I'm not a CW op, so I'm looking to be educated here.
At 20 WPM, you're doing a word every 3 seconds, so a character takes about 500 milliseconds to send, each dit being 50-60 milliseconds, dahs 150-180; the gap between dits and dahs is 50-60 ms and the gap between letters is 150-180.
As I understand it, on semi-break in, you switch between Tx/Rx in between characters, but NOT between dits and dahs. (that is, the "hang time" on the relay is probably around 50-100 milliseconds), but in full break-in, you Tx/Rx on every element.
And the idea is that by listening in the gaps, you can stop sending if you hear something (limited by your reaction time, as well. Probably in the 50 millisecond range)
If you're working at 50 WPM, all the times are faster. And if you have a fixed hang time, if you're sending really slow, you'd effectively be doing full break-in. (e.g. the gaps at my awesome 5 WPM, on a good day, speed are on the order of 200 milliseconds)
So we've got several "use cases" here.
Working someone DX, where the propagation path is 50 milliseconds or more.
Working traffic or a net with fairly close stations, the propagation path is in the few milliseconds range (1000km is 3 ms).
If you're in the latter case, and you use the "long dash" as a "break" notice to the other end, you need really short latency (<10ms, I would guess) in the round trip between key closure to RF to RF to sound.You're probably wearing headphones, so you don't have the extra 3-4 milliseconds from the speaker to your ears (1 millisecond/foot). this is truly a case where milliseconds count (heck, if your analog CW filter is too narrow, its time delay is a significant contributor: Npoles*1/BW).
However, in the former case: the latency can be a lot longer. You've already got a two way trip time on the order of tens, if not a hundred ms. There is an issue where you want to hear the other people close to you also piling on the DX. And this is probably why there's that whole skill of knowing when to start sending, anticipating the QRZ? from the DX, so your call is the leader of the pack.
As far as a SDR goes, one can make the latency arbitrarily short (comparable to what an analog radio would do), although doing it in the Windows PC context might be difficult (Linux wouldn't necessarily be any easier). Windows can do synchronization at the 8 kHz time scale (0.125 milliseconds) because a lot of the whole multimedia system has that sort of timing (1394, USB, etc. all have 8 kHz schedule intervals/frame rates); but I can see it being a LOT of work. The world of full-qsk CW ops is pretty small, so you'd definitely have a cost/benefit ratio issue there, unless you happened to be both a CW op AND a desktop OS device driver/real time expert.
OTOH, getting consistent pipeline delay of 30-50 milliseconds, which is probably ok for the DX kind of operation, is a whole lot easier.
There's also the whole tradeoff of "delay time through a filter" vs "bandwidth". You can't make a 1 Hz filter with 1 millisecond delay. And the same basically applies to the "skirt steepness".. 1 Hz transition bandwidth really means 1 second delay. (gross oversimplification here, and there are lots of clever tricks with parallel overlapping filter sections possible)
A lot of radios have an audio IF in DSP now (e.g. my IC7000). I wonder how high speed CW ops looking for fast QSK react to that? I wonder what the delay from Antenna to audio is, or audio to antenna?