If it's an InfoPath form, I'd start with a custom List, and customize the list forms (New, Edit, and/or Display), and inject your javascript there, preferably just reference only javascript file for easy modification. To add, I'll address each of your 5 points
- Populate some information from AD when the site loads first. You can do this using REST API with some user profile information calls.
- Show hide some SP columns based on choice selection. Using jquery/javascript
- Show modal pop-up (with some actions) freezing the current page etc. You can use the SP.UI.Showdialog function in order to popup a modal dialog. Modal pop up in SharepointModal pop up in Sharepoint
- Toggle a control section based on dropdwon/choice selection. using javascript/jquery
- Some validations based on people picker selection. Use the PreSaveItem