That’s ironic, because I had typed out a long-winded explanation of kara-canceling before deleting it because I figured you already knew. So I’ll tackle this one:
Kara-canceling is a layer of input-correction that was programmed in to Street Fighter to make special moves easier to perform. It’s called KARA-cancel because it involves canceling the start-up frames of one move into a completely different move. Since you only get the start-up of the initial move before going to the next, that first move is ‘empty,’ hence ‘kara.’
This was implemented because when you go for a special such as a hadoken, you sometimes end up inputting things like this:
:d: :df: :p: :r:
instead of this:
:qcf: :p:
By allowing the first few frames of normals to be cancelled into specials, your :df: :p: (crouching punch) gets canceled (usually so fast you don’t even notice) and you get a fireball instead.
I believe that such canceling was programmed only to work with two different categories of attacks. So a normal can’t kara-cancel into another normal while it’s okay for it to cancel into a special. In 3S, the common application was normal-> throw, and in CVS2 it was roll-> special