I worked at a place where agile failed because (1) the "Product Manager" was AWOL (he punched a timecard but never seemed to put stories in) and (2) the lead developer refused to put in estimate for everything. (As the one developer who actually put in estimates, I just got abuse because my estimates were "too long")
Sounds like a nightmare! Nothing worse than an environment where you get blamed for estimating something.
I too have worked in places that called themselves Agile but where everything but.
On the other hand I also was part of a well adjusted SCRUM team where the roles were fulfilled properly and we rolled through the project like a steam train.
The key was to have a really well filled backlog and then wear most of the pain during the sprint estimation meetings, and the whole team sat in on that. This made everybody understand all the features and their potential complexity before the sprint even started, and gave full visibility of the cost of each of these to the product owner, who could de-prioritise something or swap it out in that very session.
The actual sprints then were really straight forward and I really enjoyed myself there.
Prior to that I had plenty of contracts where I get "specs" from PMs, but then have to question each aspect of those, often resulting in me having to ask the product owner myself to decipher what it meant. Inevitably, nobody ever had time and I spent 50% of my day waiting for people getting back to me or work on whatever I could come up with.