Self-hosting is possible but optional. You can create rooms/spaces on matrix.org or any other matrix server of your choice. If you want control over your data, you may want to self-host, but if you consider Slack or Discord to be acceptable for your use cases, you can probably use a standard Matrix server without any issues.

You can create a "space" that's pretty close to a Discord server. Spaces include rooms ("channels") or even other spaces. This means you could set up a "Friends of pixelpoet" space with a bunch of channels like on Discord, but also a "pixelpoet Corp" server with in it spaces for "General", "Project Jabberwocky", "HR", and "Janitorial staff", each with their own rooms and ACLs inside of it.

How I would approach your setup: I would create a new space, then create a few rooms in that space (your #general, #games, #offtopic, etc). I'd also maybe add a "video room", which works a bit like Discord's audio/video channels, though not many clients support those yet (I think they're in beta?).

Then, go to the "space home" (as Element calls it), and make sure to check every channel, and set the "mark as recommended" flag, so that people joining the space will be guided to join all of the channels as well. It's possible to join a space but not join all channels, which can be useful for some but is probably pretty awkward for most. People that don't join all channels still can join after the fact, but you probably want everyone in every room by default.

For larger servers, you want need to configure ACLs before letting people in. Do note that unlike on Discord, settings change for a Space do not apply to rooms that are included in it automatically; you may need to manually alter ACLs for every room or find a bot to do it for you. If it's just a space friends or coworkers, you hopefully don't need to bother, though.

Then, to get other people into your "server", invite them to the space, or share a generated link. Just right click the space and pick "invite".

If you like the Discord UX, you might want to try Cinny, a Matrix web client that's pretty much a Discord clone in terms of design. It doesn't support everything Element supports, but it's good enough that I'd be willing to recommend it to others if they're not the ones setting up the server.

For data safety, you can leverage Matrix's encryption feature to end-to-end-encrypt everything even if you're storing your space on another server. This can have some annoying side effects (like people losing access to their old messages when they forget their recovery password, because, well, they're encrypted) and using the feature securely requires a) verifying other people and b) verifying every device you log into with another device or by entering a backup key. This is harder than in other messengers but it's also a more secure design. Could be useful if you don't entirely trust Matrix.org, could also be useful for setting up channels for sharing sensitive documents, but it's probably best for general usability to disable encryption at first. I enable encryption everywhere, but I don't think encryption/decryption is trouble-free enough that I'd be able to convince my friends to fully enable it in chat rooms as well.