Should you recompile your software with these flags enabled? In general, no.
Most software used by the average person is not seriously threatened by Spectre. It's a very difficult attack to pull off, and requires that the attacker already be able to run arbitrary code on your computer. Additionally, Phoronix's benchmarking shows there can be a substantial performance hit (sometimes as high as 40%), and that hit often shows up in things like video games that are performance-sensitive but don't handle secret information. If you're feeling paranoid, you might consider recompiling your kernel, web browser, and password manager with these flags, but other than that, the security gain isn't worth the drawbacks.
If, on the other hand, you're running a shared-hosting service, or are running a moderately valuable site (eg. e-commerce) on a shared-hosting service, you should consider recompiling your software with Spectre mitigations enabled. In this situation, arbitrary code from unknown users is running on your computer all the time. Additionally, you may be handling information that's valuable enough to justify the time needed to pull off a Spectre attack.
The difference between "thunk", "thunk-external", and "thunk-inline" is basically a performance-versus-size tradeoff: "thunk" creates one thunk section per input file, "thunk-inline" creates one per indirect branch or function return, and "thunk-external" uses one thunk section for an entire program. Thunk-inline is usually the fastest, but if it causes code to grow large enough to overflow the available cache space, it can cause significant slowdowns.