I can try to wing it on a (longish) elevator pitch.
Formal languages, ways of writing down symbols which hold together in such a way to embody meaning, sit at the core of much of mathematics, programming, and language broadly. To give formal language a meaning is to translate the symbols and their collections into meaning within a domain such that the laws of the language reflect meaning in the domain. A type system is a formal language in its own right, but one designed to reflect meaning from the domain of other formal languages (statically) and, therefore, in studying them we can learn a lot about what governs formal languages generally.
It turns out that this idea provides benefits in mathematics and programming languages. In mathematics, the technique of types has given rise to several *alternative foundations to mathematics* of interest for philosophical and aesthetic reasons if nothing else. In programming languages, the technique of types gives rise to several (but not all) forms of *static analysis of code fragments* useful to describe and guide the logic of the program under constructions.
Studying type theory is to understand the techniques of types and can be a foundation for studying mathematical foundations in type theory or for better understanding (or even creating) programming languages which are amenable to and analyzed by systems of types. It also has a transformative effect on understanding formal languages, on working within them, on wielding logics.
In my practical experience, types form an abbreviation to complex argument and design which can guide my work as a programmer often better than sketches, diagrams, and even smallish prototypes can. No matter the language I am working in by providing an abbreviated argument in the language of a friendly, nearby type system I can quickly begin to understand what it will take to build this thing and what it will take to be confident I've handled all of the edge cases.