How do I programmatically change the query "limit"? I've created listing with views module in which page has 9 items and only in first page the sixth item should be advertisement instead of result item. It means all items after sixth element should be shifted for one item. How can I do this? Would be hook_views_query_alter() the correct hook?
If you can make your change by altering the query itself than hook_views_query_alter() is a reasonable approach, although given your description I suspect hook_views_pre_render() is more likely to give you access to the data you are thinking about.  The query alter lets you change the actual query run against the database, while prerender lets you edit the result set before Drupal renders it as HTML (or similar) for output.

Depending on the details of your use case it might make sense to actually use two queries: one that pulls the value you want to highlight and one that pulls everything else.  If the highlighted item is identified because it's the 6th, this approach would be just as hard as yours, but if it's highlighted because of some other factor (a taxonomy term, or some other field value) than this approach would likely be easier. You can have 1 query that generates the listing page, and a second with a block display that's placed at the top of your listing page.