I think perhaps the wise and wonderful man behind the curtain - Ron Jeffries - captures the best thinking on the topic:
"I do, however, object to calling those activities Sprint Zero. Here is my reason:"So the debate - and I think it is much more a debate - than a productive dialogue, is over something at the very beginning of a long learning process. The transition from predictive to emergent behaviors of development. Is the debate over - what to call an increment of time? Or is it over our starting point: Zero vs One? Or is it over the principle of - do we really have to deliver something this first iteration - what could we possibly do AND do all this setup work? Do we have to do ALL this setup work? Now we are going down the right path.
"It is a core principle of Scrum that every Sprint must produce an increment of potentially shippable software."Therefore, an interval of time which does not produce an increment of potentially shippable software is not a Sprint."Therefore such a time interval should not be called a Sprint. It doesn't do what a Sprint does."-- Ron Jeffries
And the abstraction of that path is that we learn to count with the infinite goal in mind - not the beginning. We learn to count: Zero, One, Many.
If you have only ONE sprint called Zero - I'm fine with that - it is a failure if it delivers no potentially shippable software. But hey, I'm OK with failure. And if you fail once and learn something - like how to get back up, dust yourself off and start delivering working software in one sprint, well then HEY I'm good with whatever you call it.
InfoQ: What is Sprint Zero? Why was it Introduced?
An alternative view: Why do you need Sprint 0
Scrum Alliance article: What is Sprint Zero
Mountain Goat SW: Sprint Zero: A Good Idea or Not?