How is it possible that the same WIF Private Key generates two different addresses? I am wondering if you can explain this. 

I went here:
https://coinb.in/#newSegWit

Created the SegWit Address below:

3ASaGJ8h2bLn6Jha3hncBzXUKRCLyfv9bk


RedeemScript

037fa484e4b870082298d6acca0702a48714323664c647604e6461d4739feb0d9b


Public key

00147a201aa7e1cfb799dcfc2b447a0238421ae2fa60


Private key (WIF key)

KzVonapu3Cf7DaMpaqkUQ9tpsBQPBH7Yk6tXJdvMwuJSy97GK7dc


Then I opened Electrum  v3.1.3 and Imported WIF Pkey above. 

And I got this address instead:

1C8ju39MFSPXNqtYDhsuB3Ek45L46dBr3G


So now there are two addresses,  one SegWit (or I think P2SH) starting with 3... and the legacy address from Electrum starting with 1...

Appreciate an explanation of this. 

Thank you.
The same private key can be used to derive a couple of different addresses. For example, there will be a different address generated depending on whether you use a compressed or uncompressed public key in the derivation. 

More relevant to your question, you can use a private key to derive a P2SH-wrapped segwit address (3ASaGJ.. in your example), or just a plain old P2PKH address (1C8ju3.. in your example). Both addresses are spendable using the same private key, since they are both derived from the same private key. 

Note that you should not design a wallet to create segwit addresses using an uncompressed public key (use the compressed key only!), due to potential backwards-compatibility issues in the future.

This image from the bitcoin wiki Address page helps to illustrate this point: