I would like to get a good grasp on the subject, hence want to ask following questions to the community:
They bring the ability to take your source code and "understand" it at execution time - LINQ providers being the prime target of this
Well, expression trees are often built from source code (e.g. converted lambda expressions) but instead of that source code being compiled into an executable form it's built into a tree which other code can inspect. (More precisely, the compiler takes source code, and emits executable code which in turn builds an expression tree at execution time.)
Expression trees and functional programming seem somewhat orthogonal to me, to be honest. Both often deal with higher order functions, but that's about it.