Some things look like they might be needed to support features. e.g. GPS for geo-tagging, network access, make phone calls, USB storage (this one is a can of worms), take photos, record audio. Creating accounts is fine too I think.
Apps need to declare all permissions that they might require, even if you never plan to use that feature. Obviously once an app has declared it requires a permission there is nothing stopping it from using that permission maliciously or to breach your privacy.
There there is "READ PHONE STATUS AND IDENTITY" which is often used for advertising. Has a bad reputation, although alternative solutions which don't require this permission may be even worse for privacy (or so I have read).
However, there are some that are really interesting, e.g.:
READ BATTERY STATISTICS
RETRIEVE RUNNING APPS
DRAW OVER OTHER APPS
WRITE CALL LOG
READ CALL LOG
I can't think why Facebook would really need all of these. DRAW OVER OTHER APPS looks a little bit scary.
These might be required for the app, however do make me nervous:
READ YOUR CONTACTS
MODIFY YOUR CONTACTS
Older versions of cyanogenmod supported disabling permissions so you can restrict what it can do if you don't like the requested permissions. Not in recent versions unfortunately. There might be alternative apps in the market to do this, haven't checked in ages.
Also note, there are restrictions on these permissions. For example an app without FULL NETWORK ACCESS can still start a web browser activity using your favourite browser app and use this to leak private information (e.g. in url). This was an Android design decision.