As far as machines are concerned the best advice I have to offer is to pick something where you can setup your stack and development environment in no time and find help for common issues in community. For example spending a several hours configuring an obscure linux distro may be a good intellectual exercise but would not contribute towards the ROI of your actual job/project (unless it involves system administration).
The specs of the system would largely depend on the stack you need to use. Something like 2.2 GHz + 16 Gig RAM would be adequate for typical web development projects with dynamic languages and medium-large codebases. Things like Graphic processing, etc. may require significantly more powerful machines for complex tasks.
In the same theme, it is advisable to spend some time familiarising yourself with tools that allow you to setup isolated development environments that you can quickly setup (through a script if required) and can be dispose without any impact on your base system. Vagrant and docker are great candidates, but there may be other good options as well.
Vagrant is a tool for building complete development environments. With an easy-to-use workflow and focus on automation, Vagrant lowers development environment setup time, increases development/production parity, and makes the "works on my machine" excuse a relic of the past.
Virtualization of dev environment would be the best way to go if the community around your stack does not actively endorse your primary operating system. For example given enough effort you can get a Rails application running on Windows but using a barebones linux OS in Vagrant is much easier option. Also your team might actually have automation scripts to configure such instances for your application(s) - if not consider adding them. Resorting to virtualization does incur more resource consumption - so it might be worth it to invest higher on RAM upfront. Docker on linux is a great option to have isolation without virtualization costs.
I am personally not very fond of multiple monitors as I find them distracting but multiple members of my team find them very convenient. If you use a linux workstation consider getting a tiling window manager if you find yourself productive with multiple monitors. i3 is something I have used in past and found it easy to configure - there may be other candidates as well. On OS X, it would be difficult to get proper tiling window management but utilities like Spectacle come in handy.

Even if there exist IDEs with great support for your language/framework getting familiar with atleast one programmers' text editor is strongly recommended. Sublime and Emacs are good candidates which let you get started quickly without going through a lot of learning curve upfront.
When editing user interfaces, I usually have a semi-transparent emacs running on top of a maximised chrome so as I keep making changes, the browser is auto-updated through livereload/hmr and in most cases I can just verify them by seeing through my editor without having to switch windows. When it becomes distracting I can toggle the transparency with a single keystroke.

Also version control is absolutely essential for any project that is not a throwaway one evening experiment. Git is the industry standard and developing basic familiarity is not very difficult - embrace it.
As far as services are considered, a git hosting service (Github is ubiquitous here) and a good CI service are the only ones that come to mind at this point. Travis is hassle-free, and works great for ruby & node. It is also free for open source code. The interface is elegant and minimal:

Do consider sharing your experience once you have finalised your setup.