After user has granted permissions to an app to fetch certain data from Facebook, while he does a 'Login with Facebook', is it OK for me to create an account for him on my app using his data fetched from facebook ?
To be on the up and up, you should notify the user of your intention and explain the benefit of auto creating an account for them.
One benefit would be that if the user decides to delete their Facebook account, they should still be able to login with the account that you create for them, as long as the user is provided with login details.
If you are going to store any state for the user (I can't imagine a useful service that doesn't do this), then you have to create an account in your own database that is linked to the Facebook account. Look at how Stack Exchange works when you log in with Facebook; it stores information about all your activity and lets you create your own Stack Exchange profile.
The users intent when they 'Log in with Facebook' is to create a relationship with your site, associated with their Facebook account. That is the entire function of the action, and so I do not believe that you are breaking the trust of the user by storing persistent data related to their choices and preferences on your site. The relationship is meant to be persistent, otherwise it is not much of a relationship.
However, you should provide users with a 'Log Out' control, that clears their session cookie and allows them to return to anonymity should they choose. But if they log in with Facebook again, the user will expect you to remember the preferences they chose previously; this is impossible without storing persistent user data in your application (and that's really the definition of 'account'... a persistent user token tied to their preferences).
I hate it when I choose “log in with XXX” and then the site makes me pick yet another password.
Often I give up using the site at that point.
I expect a site to remember my email address and Facebook ID and maybe my name but nothing else. If the above is stored in an account it is not a problem for me, provided I never have to do anything to manage that account.