Following post will be episode 24-25 spoiler-free.

Shinta hit it just about dead on on both counts. Lelouch is a villain. You're supposed to hate him. However, the audience can't help but like him as well, seeing him succeed and later that his motives are very much the product of his immense desire to protect Nunnaly. Watching Lelouch is like watching a con-artist or heist film, you feel good about watching the plan succeed. But you can also hate Suzaku as much as you like, like most of us do. He is Lelouch's balance point. Lelouch thinks he needs to do everything by force, and only at the point with Euphie does he see there may be another solution. Suzaku is of course, the world's greatest hypocrite. He professes peace and slowly changing everything, trying to keep everyone alive. He plays the role of The Hero. But we learn that deep down, he's no better than Lelouch. He readily kills to stop the killing. What makes the series really interesting is that we see Suzaku and Lelouch slowly gravitate towards being the same person. It climaxed at the end of episode 23, and in 24 and 25, you'll see how that drift turned out.

As for Shirley, most of us agree that what Lelouch did was the stupid thing. He got emotional about it, didn't take the time to think, and on impulse, gave her a poorly thought out Geass order. But he had good intentions. He saw how incredibly tortured Shirely had become. She was still very much smitten with him, but couldn't bring herself any closer like she clearly wanted to because he killed her father inadvertently. Tying in with above, consider it a moment of Lelouch's weakness, the slow shift toward Suzaku's personality. As Shinta said, he no longer wanted to see her suffer, and especially since it was his fault, he made a snap decision during her emotional fit and put her out of that pain. Maybe it was ill-guided mercy, perhaps it was a reaction to how powerless Lelouch felt about her in his guilt.