While developing games for mobile devices, should I consider implementing In-App Purchases like currency system (The users buy virtual "money" to get upgrades) or enabling users to buy specific items (Like for $1.00 get specified Weapon). Is this consider a good UX practice, and if it is, which method work best for the user?
You should charge outright for the game instead. I find it frustrating when I get into a a game that is "incomplete" or where I need buy "toughness" to keep it up with good records or other players. With a limited number of exceptions I tend to delete these apps from my devices!
On the other hand, buying expansion packs, is not that annoying.
In my opinion, having "virtual currency" gives a user more flexibility and is less annoying as compared to buying individual upgrades. As a developer it gives you more flexibility because you may add more "upgrade" options without creating them on the Apple Portal.
You can have multiple "coin packs" ranging from small (having less number of coins and costing less) to large (in which you may decide to give a bulk-buying discount). So users may decide how much they want to spend at a given point.