A look into the Glossar from Databricks or other online resources should clarify your doubts:
"Tungsten is the codename for the umbrella project to make changes to Apache Spark’s execution engine that focuses on substantially improving the efficiency of memory and CPU for Spark applications, to push performance closer to the limits of modern hardware."
The Catalyst optimizer takes your code and converts it into an execution plan which finally ends up in generating compact code for the JVM. It goes through four transformational phases depicted in the picture below:

Note, that the "Code Generation" phase is the fourth phase in the Catalyst Optimizer. More details in the subsequent seciont.
"Whole-Stage CodeGen is also known as Whole-Stage Java Code Generation, which is a physical query optimization phase in Spakr SQL that clubs multiple physical operations together to form a single Java function."