Hello Varun,
I'm sorry to see that you're having trouble with the 2-Step verification code. I'm afraid I haven't been able to replicate this issue while enabling 2-Step on a user account.
Which authenticator app are you using?
In Google Authenticator, the verification code cycles every 60 seconds or so. Can you please verify that you're entering the code before it cycles to a new one?
Are there other users who can't enable 2-Step or is does this issue occur with only one user?
Regarding "you must not be using system administrator account to send email to a recovery email address it would simply reject it":
You can configure the From address that's used to deliver the 2-Step Verification Code email. Log in as the system administrator and go to Settings > System Messages. Click on the 2-Step Verification Code template. On the right side of the screen, you can enter a From Address.