All of this has been established and explained in the show. Whether you like these explanations is one thing, but it isn't something that's just been written off, they've directly confronted these questions this very season.
1) Yes, the defection does serve as a reason for a weakened Tyrell force. In addition, this very episode explained how the Tyrells were very firmly caught off-guard; the expectation was that the Lannister army would be defending Casterly Rock and King's Landing (as Lady Olena explains to Jamie in talking about Tyrion's strategy). A fight over Highgarden did occur, we see the aftermath. Why not show the fight? Well, that's a very valid question, but with seven episodes this season and six in the next the question which arises is if it's really a valuable use of the very limited time remaining to focus on what's ultimately a very minor battle compared to what's to come.
2) The expectation was that Castery Rock would be well-defended, and by being seen as an important symbol of the Lannister's power, it falling would be very symbolic and result in people losing confidence in Cersei's ability to defend them. What they did not expect was that it would only be lightly guarded and basically abandoned so that they could take the much more important (in terms of practical significance) Highgarden. Tyrion may be a very clever person, but his only experience of wartime strategy is his defence of Blackwater Bay, whereas everybody on Westeros has had years of experience. His plan was in theory clever, but did not really take into account Euron's domination of the seas (now how earned that is one can also question).
3) Because with the smaller army she would have been content forcibly taken King's Landing. The entire reason she's failing here is because she refuses to go for the most bloodthirsty approach and heed Olenna's advice. She doesn't want to unleash a Dothraki horde upon Westeros and have the citizens hate her (and justify the views as a foreign conquerer/invader), she wants them to be inspired by her and support her claim out of love. If she attacked King's Landing directly she would be in a much better position now. Her refusing to do that is what's crippled her forces.
Obviously they would try to give a semblance of justification for the events, that doesn't mean it makes any sense. The Bolton controlled the entire north and took almost an entire season to get back Moat Cailin, a dilapidated fort held by a handful of disease-ridden ironborns, and they had to get Theon to betray them in the end. The same Lannister army, with the Freys at its side, was ready to lay siege to Riverrun for two years, even though there were only what appeared to be a few hundred Tullly soldiers inside at most. And you're going to tell me that a fraction of the Lannister army just walked up to one of the most legendary castles in the land and grabbed it in an afternoon?
How unprepared could the Tyrell have been? They were ready to launch an invasion themselves, and they've been hoarding supplies for the whole show. Surely they would have had time to see an army marching up all the way to their front door.