New to cryptology, studying key exchange
Key stretching usually means using a Password-Based Key Derivation Function (PBKDF), these are designed to be more resource intense than standard hashing, which is designed to be as fast as possible. A salt is used to prevent that two derived keys are differentely so that you'd need to brute-force each password independentely.
Usually you derive a key from a master secret if you negotiated a key beforehand and need a key for a cipher or a MAC. Key-Derivation-Functions are usually hash-functions with some slight modifications. A real world sample would be TLS, where you derive a key after negotiating a master secret using either DHE or ECDHE. TLS v1.2, see Chapter 5
There's no difference between PFS and FS other than naming. Wikipedia