Restful Routing and restful versus non-restful routes

[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