Hardwood should be installed first. Hardwood installation will create dirt and dust that you do not want the carpet to pick up. Also, if the carpet will meet the hardwood in any room, the carpet should be stretched to the hardwood and tucked between the tackstrip and hardwood.
Generally yes. By installing carpeting first you avoid the possiblity of getting glue from the installtion prosess all over your band new floors. However, if you are able to install both at the same time that would be ideal. It might be tricky to navigate the workers but in the end it's best.
Install the hardwoods first. Carpet should be installed last because there it can be ruined much easier than hardwoods. Hardwood floors have to be stained and sanded. There is a chance that the stain could get on the carpet and ruin it. Also the glue used to fasten the hardwoods could ruin carpet.