Am fortunate to work in a place that offers "agile" working (it's not a developer focused environment, so that word isn't loaded for us). You go where you need to to get the job done, within a set of core hours work how you need to. You can work from home independently for days or weeks on end, or you can turn up to a desk every day, or you can collaborate in a meeting room, on Skype, or in a cafe.
We have an HQ, but not enough desks for everyone to turn up every day, so there's an expectation of being fluid in how you work. Every meeting has a video conference link, and very few decisions are made by the proverbial watercooler. It takes time and discipline to make it work, but that's spread by default and expected across the entire workforce.