For small clusters, like your 3 or 5 node setup, I would probably not go for dedicated master nodes but let all of the data nodes also be master eligible ( node.master: true in elasticsearch.yml). I use this setup for a couple of smaller clusters.
If that turns out to be a bad choice, e.g. if indexing and searches take so much resources that the master functions suffer (with cluster state timeouts in the logs), you'll need dedicated masters in the cluster. You can go for 1, but that's not very fault tolerant since the cluster will go down if you lose the master. The next level is 3 dedicated masters, which is what I use, as that will prevent split brain issues if you set discovery.zen.minimum_master_nodes: 2. You don't need very powerful servers to run the masters, just good connectivity for frequent cluster state updates and to quickly elect a new master if the current master goes down.