Emacs is a platform and a framework for text-based applications. Generally, people call it a text editor, but I don't think it's a good description. You can think of it as an "operating system" that comes with a lot of text editing functionality built in. That's the "default" text editor, a generic use-case of Emacs. The platform is completely open and extensible to the core, which allows anyone to create more text-based functionality.
While it seems like the majority of users of Emacs are software engineers, Emacs is not necessarily limited to editing code. It can be as generic as you want. As long as you're dealing with text (in any form), Emacs can provide value.
Emacs Modes are extensions. One might call them plugins, but there's a reason this term isn't used generally. Plugin assumes there's some API with a limited set of features. For example, VS Code or Sublime Text (popular code editors) provide APIs for plugin developers, which allows people to add features to the editor. But the extent of extension (sorry) is limited by the API. Emacs on the other hand is virtually unrestricted. That's why I can show you five different Emacs setups and you'll struggle to recognize them as one program, in both visual aspects and behavior.
The language Emacs speaks is Emacs Lisp, commonly shortened as elisp. While it's probably not the best of Lisps, it's a nice and pleasant language nevertheless. Configurations and extensions are written in elisp. This is pretty unusual: there is basically no difference between someone's personal configuration and an extension package. Both are just code.
Everything that happens in Emacs is elisp functions running. When the user presses the "R" button on the keyboard, a special elisp function runs (
self-insert-command). It runs because it's bound to this key by default, but you can change the binding. You can write your own function and make it so that
R appears on the screen only when it's midnight, otherwise letter
Я appears. A silly example, but you get the point.