The vast majority of people I know use Atom or Sublime with the various plugins;
https://atom.io/packages/language-chef
https://github.com/cabeca/SublimeChef
I would also recommend the foodcritic/ruby/rubocop plugins as well. These will really help you along the way.
As jldugger mentioned, kitchen is a handy tool for streamlining this. Sometimes, you don't want/need that extra layer in your process. In this case, I would suggest using the chef-solo provisioner for Vagrant. You can put everything into your vagrant directory ( I typically place it into a sub directory aptly named 'chef') and include it as part of the Vagrantfile. Take a look at the documentation from Vagrant on how to configure. (https://www.vagrantup.com/docs/provisioning/chef_solo.html)
The configuration will prevent the extra steps of running solo or client from within the host as the link you shared mentions. If you are building and testing cookbooks specifically, then definitely checkout Test-Kitchen as it will make life easier with multiple converge and testing phases.
With the AWS AMI you just buy the SKU that corresponds to the # of nodes you want to manage. We have different items for different sizes of infrastructure. https://aws.amazon.com/marketplace/pp/B010OMNV2W/?ref=reddit