Matrix is a protocol made for decentralized (federated) instant messaging, this means that everyone can spin up their server and start to talk with every other Matrix user. As this protocol is open, anyone can implement the specifications into a client (more on that later). Most of those clients are also Open-Source. As of now, Matrix has End-To-End Encrypted private messages by default, and it can also be enabled in any room. You can read more about the protocol itself on their official website.
In Matrix, a server is called homeserver and choosing the right one is essential as you will have to trust it. Good lists of homeservers are the Anchel list and the French CHATONS. It is generally preferable to avoid the official homeserver (Matrix.org) as it is already overloaded with users and can sometimes be very slow.
In Matrix, you have the choice to choose between a good number of clients, here is a small list of the best with a description:
All the clients listed support E2EE, some other might not.
On Matrix, every user has an MXID (Matrix ID) that is composed like this: @user:server.tld for instance, the user @me:jae.fi means that the user is "me" and is located on the homeserver "jae.fi". The same goes with rooms but with # instead of @.