If you understand programming (there is a difference between knowing how to program and understanding, a lot of people lack the latter) there is absolutely no difficulty learning CS if you know JS.
I've been coding CS for over a year now and I like it, I've never found it hard to debug and it's just easier to read.
It template agnostic, once you've rendered your view you give rivets your DOM element and it will find the data attributes. You could use handlebars, haml or any other templating engine with rivets.
This is pretty much only useful for JS apps.
The problem comes when you have data changing after a view has been rendered.
Rendering the whole view again can be expensive. As well as this the user might have interacted with the page in which would probably make the user loose his changes.
Well, they do have different goals. Rivets wants to be a small plugin that works with any framework while knockout is also designed to bring structure to the party.
For me it's like comparing an engine with a car.
One big upside to knockout is that the lib is a little under 3KB minified while knockout is 40KB minified.
I prefer having smaller libraries that are really good at what they do.