Sorry if it seems judgmental, but I believe you are approaching the question from the wrong angle.
Somehow I feel you would end-up prisoner of something you didn't expect if you started designing your game exclusively for Facebook.
I believe the ideal is to make a true game (C++, PHP or HTML5 based) which integrates with any social network.
The idea is to make the game and concentrate on the gameplay/fun first. Integrate all the social features you need independently of the social network you use and create an interface which will convert your social requests into calls to the social network the game is deployed on.
Concerning Facebook the graph API is very simple to use. It's basically a REST API which returns JSON data. You can use it from your web server (PHP), from your mobile application (Objective-C, Java, C++). All you need is to create an application in your developer app interface. Your application will get the key and secret hash you will then have to use to communicate with the facebbok API. You can start experimenting within minutes :)
The only gotcha is that even public data now requires authenticated access. So you will have to authenticate the user using one of the available mechanisms.
Whatever you do you will probably need servers of your own or some cloud servers to store your game data if you want to make it multiplayer.
I might have a biased view of the subject as I usually integrate Facebook into existing projects.