Not sure on #1. I am not sure what you have in place that opens new forms from a single library but originates from multiple webpages.
2) You need to make a data connection to the XML version of the list. When you do this, the data is defined before coming to the form, which means it will be sorted, filtered, and will have the same columns as whatever view you connect to in the list. Instructions on this can be found here.
3) What I do is NOT set either field to be required, but rather place conditional formatting on my submit button (custom button on the form - no code, just rules) that makes the button not show up unless all criteria are met. Once the criteria are met, the button is available for submission. You can easily set the necessary conditions so that the button is disabled if both dropdowns are blank. What this does is make it impossible to submit with mistakes, and the user never gets a validation error after trying to submit an invalid form, which is what happens when using the built-in "cannot be blank" option.