Hi Diggy,
here's how I have my elastic stack set up.
I have two physical machines which each run 5 Elasticsearch nodes as I have 5 data drives, one dedicated to each ES node. It doesn't really matter if you run separate machines for each node, which I think is the preferred approach but I couldn't choose my hardware so for me it made sense to run more than one node per machine.
I have one Logstash instance and one Kibana instance per physical machine.
The machines have 126 GB RAM and 24 CPU threads. Each ES node have a 10 GB heap. I think Logstash has the same, which leaves about half of the RAM for Lucene/system.
All nodes are data nodes. 4 of them are also master eligible. I'm using discovery.zen.minimum_master_nodes: 3. The reason 3 master eligible nodes are the minimum for high availability is because you need quorum, a majority of master nodes that decide what is the correct current state of the cluster. With 3 master nodes that quorum is 2 which translates to discovery.zen.minimum_master_nodes: 2
For a 3 node cluster I would run all nodes as master, data and ingestion (that the new one, right) nodes. If the machines have enough hardware resources I would also run Logstash and Kibana on each.
If you use Filebeat as the logshipper you can set all Logstash instances to receive logs and Filebeat will loadbalance between them.
For the config files per node, I think the only difference would be network.host. If you try to run more instances of ES on the same machine then there's more differences.
Good luck 