[snip] Question 1
Second requirement for route to be restful is that action corresponding to route must "play by restful rules" in another word, for example a GET should not leave side-effects on the server, but just retrieve data. So if i have /products(.:format) products#index and within index action i saved something into DB, than above route is just looks like restful route but in fact it isn't?
Whether it is restful or not is not relevant as you should not do this. Imagine, for example, the havoc caused when google interrogates all the GET routes in your application.
Question 2
I know that i can pass to restful route additional parameters, for example: link_to "Show", products_path(id: 5, a: "aaaa", b: "bbbb") so now URL is: products/5?a=aaaa&b=bbbb. So am i violating restful here, or this route is still restful?
It is still restful.
Question 3
To me seems that i don't need non-restful routes at all, when i can make a bunch of restful routes with construct like following?(and other similar construct) Question 4
resources :products do member do get 'preview' end end
So what is the question you are asking? If the restful routes fit your needs then use them, if they don't then use other routes.
Colin