Flaw vs Vulnerabbility
Simply put, a flaw is a defect in the implementation that can lead to a vulnerability.
A vulnerability is a condition that can be exploited by an attacker. Not all flaws can be
exploited, but once someone has figured out a way to attack (or exploit) a flaw, it
becomes a vulnerability.
Oh, and the exploit refers to a procedure or program intended to take advantage
of a vulnerability, similar to a weapon.