Rhino is very good ... Rhino + Grasshopper is superb
Rhino is a great tool. It's powerful and flexible, its learning curve is not too steep (surprising given the overall power of the solution), and it has worked for me with zero bugs or crashes. It's impressive. Grasshopper is a free add-on that makes Rhino 5x as powerful for my needs.
I like Rhino, but Grasshopper blows me away.
One of the traditional toughest challenges in modelling is how to tune or recreate your work. Creating a significant model happens in hundreds or thousands of steps -- creating each object, relationships / alignment / intersections etc. Even in a great tool like Rhino this feels somewhat like drawing. What happens if you are 20 hours into a project and determine some basic decision (like a key dimension) needs to change? Rescaling etc. can only get you so far. Unfortunately, in the traditional approach, the further you go in a project, the harder it is to change.
Grasshopper changes this approach entirely. Grasshopper is a visual programming tool that runs in a separate window, but controls what happens in Rhino. This allows you to capture all your decisions (origins, dimensions, ratios etc.) as numbers / parameters, then push a button to create the Rhino model from this. All the steps (create object, rotate, intersect, mesh, whatever) are explicit in Grasshopper, so you can always change a parameter and re-run the scenario with changes to get a new Rhino model.
This is a superb idea and the execution of it is also very good (although not yet perfect). By moving modelling further away from the "CAD drawing" paradigm and closer to the "process / programming" paradigm, many things get better. I love the fact that I can review my parameters and modelling steps with another person, that I can change the parameters and re-run models, and that I can put Grasshopper models into source code control. Grasshopper captures much of the value of very expensive modelling tools like PTC.
The only problem with Grasshopper is that there are operations in Rhino that are not yet provided in the Grasshopper layer -- in these cases, you need to work in a more hybrid mode, flipping between the two tools that breaks the new paradigm a little. It would be natural to assume anything you can do in Rhino (UI or Rhinoscript) could also be done in Grasshopper -- not yet true. Hopefully McNeel will achieve complete parity between Rhino and Grasshopper. You can bridge the gap somewhat by creating custom scripts in Grasshopper (e.g. I use Python to access the Rhinoscript API when needed) -- neat capability, I'm OK with that, but it's probably a bit much for many users.
It's hard to fully understand Grasshopper until you use it. My challenge to you is, create a model without touching the Rhino window -- just treat it as output from the Grasshopper process. You can do it, and once you fully grasp this process, it will change the way you think. Not to mention give you a massive productivity boost.