For me I'd hide the ribbon save options.
I'd have the following: two buttons. 1 called Approve, 1 called Reject on the form.
A hidden field called FormStatus. I'd have another field called FinalApprovalStatus
Each button has several rules to it when the button is pressed.
Set the field FormStatus to 2.Submitted to X or what ever you want to call it. - I think it's a good habit to get into to have a FormStatus field, as your forms get longer and more complex, it becomes invaluable. You could have a default value of 1.Started or whatever you like.
I'd add two ApprovalStatus Fields i.e.Approval1 and Approval2. That way
you can have rules to check that all the required approvals are done
etc. based on a user selection
Set the field Approvel1 to Approved or Rejected.
If the form is ready to be finally approved Set the field value FinalApprovalStatus to Approved or Rejected.
Switch to a Approve/Reject Thank you screen
Submit Data
Don't have a separate approve/reject control and a submit button. I've seen to many instances where something is approved, but not submitted.
Emails etc. will done using a workflow.
Rules actually fire off at different times depending on how you have set up your submit options especially validation rules - http://mikesnotebook.wordpress.com/2010/02/02/infopath-submit-options-and-form-validation/