How to display 'Terms and conditions' before starting a download, possibly using Rules?
It should be possible to implement a procedure that fits your requirement, using a combination of the Rules and Flag modules. Here is how you could do so:


Create a Flag (using the Flag module), related to your "terms and conditions" page (=TOC). The actual perpose of your flag is to have the user "flag" the TOC-page to confirm something like "I agree to the terms and conditions".
For any of the relevant download pages, try to have a path for each of them that starts with something like downloads/. It can be any path you like, just make sure it's something that uniquely indicates "this is one of the download pages for which we want to make sure the user agreed to the TOC as on the TOC-page".
When the user then requests the download page to be viewed (opened), add a rule that is a variation of the rule I included (in export format) in my answer to the question about How to restrict access to a node via node/12 and allow access via a path like content/sometitle? 

These are the changes to that rule to make it work for this case also:


Change node to downloads (as in my assumptions above in "2.").
Add a Rules 'Condition' like "If this user did NOT flag the TOC-page yet".
Change the "Message" (in the Rules 'Action'- to something to indicate that the user must first "accept the TOC" (by flagging the TOC-page, as in "1.".
Add an extra Rules 'Action' to issue a redirect from the selected download page to ... you guessed it ... the TOC-page!



Haven't experimented/tried creating this Rule (= variation of the rule in the answer I mentioned above), but pretty sure it'll work. Hopefully you'll be able to complete the rest of the puzzle in my answer on your own (if not let me know where you get stuck and I might enhance my answer for it also).