functional verification formal
the difference is the approach of the verification itself
in formal verification for instance, you can use mathematical proof to make sure your design is going to function okay...it can be by: theorem proofing, model checking, equivalence checking...and other different methods....
tools: conformal, formality, etc
functional verification is the big umbrella...it's when you verify that your design works fine compared to its specs....formal verification comes under it...along with dynamic verification (simulation)...emulation...linting for HDL...and other ways..
tools: modelsim, ncverilog, etc