Expression trees represent code in a tree-like data structure where each node is an expression. This enables dynamic modification of executable code, execution of LINQ queries in various databases, and creation of dynamic queries. Expression trees can be compiled into executable code using the Expression<TDelegate>.Compile() method.