When to use Docker-Compose and when to use Docker-Swarm

I think you must define networks explicitly unless you use links: (which creates networks behind the scenes, and is somewhat deprecated).

No, you must use networks. This is for isolation purposes as well, since there might be some containers you don’t want to be callable from other ones.