For question #1:
Yes, exactly. In the RewriteRule itself, there is no difference between a page and all the other stuff-- not just images but stylesheets, scripts and whatnot. mod_rewrite doesn't know and doesn't care which things were typed/clicked by a human (normally the page alone) and which things were requested by the browser after it has seen the page.
So if the Rule says simply .* (again, the anchors aren't needed) then mod_rewrite has to check the Conditions for every single request that comes in.
So you start by constraining your rule to
RewriteRule \.php$ et cetera
meaning that mod_rewrite doesn't even look any further if it's a non-page. If there are things you do want to do with non-page files-- anti-hotlinking routines are a common one-- make those rules with only the extensions that apply.
2) I also banned question marks in the query string - would that be ill advised (in reference to your comment on search engine Referrer)?
Queries and referers are entirely different animals. mod_rewrite will never mistake them for each other. I don't think a query
can contain an additional question mark. Don't remember seeing one. But blocking them in a RewriteCond won't make your server explode.
The "referer" in mod_rewrite is one vast mouthful, including two things that are explicitly left out of a regular RewriteRule: the domain name and the query. mod_rewrite doesn't dissect the referer into its separate parts. If there was a query-- like when you get a visitor from a search engine-- the referer string will include a literal question mark.
In fact I've got Rules myself that look at whether the visitor came from a search engine. The rough-and-dirty way is
RewriteCond %{HTTP_REFERER} \?
meaning simply "the referer string contains a literal question mark". No anchors; the ? just has to be in there somewhere. There are also rules for auto-referers: when a robot thinks (probably rightly) that it will look less obvious if it comes with a referer, so it puts the name of the requested file in the Referer slot.
And I don't use php, so I've got another rule that slams the door on almost all requests in \.php