...but recently I've been wondering how to explain what I feel is important about FP in a pithy, succinct way. (I've frequently found myself failing to explain it well).
I think in the future I'm going to say this:
"Functional Programming makes programs easier to understand. And that means they're less likely to go wrong."
For my money this is why functional programming is vitally important - because the biggest problem we have right now isn't concurrency ... it's the fact that we can't even write single-threaded programs that work properly. (Of course "go wrong" is used above in the standard rather than the Milner sense).
One other comment I'd make is that I think the "easier to understand" bit becomes more apparent with bigger programs.
I'd be interested in hearing if anyone's got a better way of describing it.