I would guess that there are a lot of cases where the estimation turns out to be wrong at some point. Because as soon as you drill down into the nitty gritty details of a backlog item you will probably almost always find something that you haven't thought about during planning. This can happen either during task level sprint estimation or during the actual sprint.
During task-level estimation you might discover so many tasks for a story/backlog item so that the initial estimation needs to be adjusted. What do you do now? Do you go back to the product owner and tell him that he might want to re-prioritize its backlog items, now that takes much longer (or even less)? Basically it could mean that the whole team needs to go back to story-level estimation and reshuffle the stories?
During the sprint you might discover that the implementation needs much more effort than initially thought. What do you do now? Do you silently continue the sprint knowing that you can't finish it as planned? And from now on you will add a "security buffer" to all estimation?
Generally, how does SCRUM address estimation accuracy as a whole?
If I understood it right, the SCRUM developer team kind of "promises" the product owner that it will deliver as planned. But that can only be done if they estimated accurately. So estimation seems to be very crucial to the success of SCRUM but also very hard.
Estimation process is the hardest thing in SCRUM. Sometime it may take up to 1 day to sit in conference room with a team and discussing what efforts need to be applied in order to complete every particular story. Don't even hope to get an accurate estimate in few first sprints. You should just accept this as the fact and go forward. Depending on how much details in your stories and how long team work together this process will be getting better from sprint to sprint and estimate will be more accurate. So far you can just calculate velocity or take 0.5 as the current velocity of you team. After you end up with first sprint you will get a more accurate velocity which then can be used to build a scope for next sprint.
My team had a huge problems with giving an accurate estimate at the very beginning of a project. There was nothing in a project we could rely on, there was no architecture and the system is so large and complicated so everybody was scared to give any estimate at all because nobody knew what exactly should be built. We've solved this problem by introducing System Analyst(SA) to our company who is analyzing all incoming requests and doesn't pass them to development until everything from business point of view will be clear. The main purpose of SA is to understand new feature, see how it can be implemented and propose the solution on high level taking in account dependencies on already implemented functionality and keeping in mind the functionality we plan to implement in upcoming sprints. After initial analyzing has been done SA creates stories and add them to backlog. Then these stories go to designers. They design screens and attaches them to stories. After that story goes to product owner for approval and setting business value.
All of these steps above has significantly reduced a time spent by whole team on estimation meetings. Now when meeting starts we have almost everything we need. Every story is explained in details, developers see how it affects existing functionality and see design so it's easy now to focus on technical questions only. So just as an conclusion in process we built SA and Designers are working on features which are planned for next sprints while developers and QA are focused on the active one. This allows us by the end of active sprint to get all stories analyzed and with design for the next one.