Separated server code from client code

Unity has a dedicated server platform build target: Unity 2021.2: Dedicated Server target and stripping optimizations now live! Please share feedback!

So you do not need to create separate projects.

For tech you can use just about anything, Mirror, Photon, Unity’s new Netcode for GameObjects, … and depending on that and how much convenience features you can live without you could have a server that’s not made in Unity.

Based on the type of question I’d say you should first make a simple prototype with networking and learn by doing. You’ll realize it’ll be much, much harder to just get some things interacting in a network. Once you know how all of this works, you can scrap your prototype and start fresh and that’s when you make choices regarding what the server is doing, how it is being programmed, etc.