The fallback function is a feature of the Solidity language, and is not an EVM-level feature. Solidity simply parses the msg.data
field in transactions according to the ABI:bytes4(sha3("functionName(argTypes)"))
When the code is compiled, the ABI signatures are stored in the compiled code, and when the code is called, it looks to see if the first four bytes of the msg.data
corresponds to one of its functions. If so, it calls that function with the rest of msg.data
interpreted as arguments. If not, the fallback function is called.
Serpent could implement a similar system, but I don't know enough about Serpent to say how it could be implemented.
throw
statement are independent features.