A listen server is like you discovered one process acting as a host for the other clients while also playing the game as a client itself.
Coding for a dedicated server is easier since you never have to worry about splitting the server and client code up however if you plan ahead and make your logic work for a listen server it should also work on a dedicated server.
The way you split “serving other clients than yourself” (server) logic from “serving your own client” (Owner) logic is to use the IsLocallyControlled function on Pawns/Characters.
If you don’t plan on ever releasing a dedicated server you should avoid it altogether as it complicates the development and testing workflow since you have to build and test two individual programs instead of just one already bundled together. The listen server also runs both server and client in one process so it will also use less Memory and CPU.