When I set up a new Pi image for a project, I plop the latest Raspbian image on an SD card using Win32DiskImager. Then I fire it up with Ethernet, power, HDMI, and whatever keyboard is within reach and follow the below list of steps.

I only use the physical console to run raspi-config where I turn on SSH and change the hostname, everything else is through SSH.

The homelab-setup.sh is a script from my GitHub repo T3hUb3rK1tten/homelab that sets up my SSH and sudo configs just how I like it on my homelab Linux servers. This means only SSH key based auth, stricter cipher configuration (thanks to cipherli.st!), and no password sudo. I don't really consider the Pi's to be part of the homelab, but they benefit from this config anyways.

It also takes care of the annoying ~/.ssh directory permissions, which I can never remember. I highly recommend creating a similar script yourself. I could have used Ansible/Puppet/Chef/etc, but this isn't at that scale (yet).

The new-ish dhcpcd implementation in Raspbian means that we can now use a fallback static address profile. This is super handy when you're out in the field with a Pi that needs to have its network reconfigured and you can't access it over WiFi/etc. Just plug it direct into your laptop, set your laptop to something on, and connect to