It is true that blocking a permission can cause apps to mal function or crash on occasion.
The app ops type permission managers (like from info life), even if you choose not to block anything, still give you info about what permissions have been used (although it doesn't cover all permission categories). I observed that (thankfully) most of apps I install (which tend to be well screened) that request access to things like contact permissions don't actually access them (unless I have done something that would naturally make them access permissions). That doesn't include Google apps, which seem to access a lot for no apparent reason, but I tend not to worry about them.
I use afwall+ firewall to simply block internet for apps that don't need it...hasn't caused much problem.
A more sophisticated approach is xprivacy xposed module (xposed needs root). It allows you to feed false data (like empty contact list) so the app won't crash...it'll just get useless/bogus data fed to it where you choose. It's Lightyears more powerful and flexible than app ops type permission manners in many ways. Xprivacy is sort of like a database which allows sorting and filtering by app, by specific permission category, by status (permission altered by the app or not). It also breaks down permission categories into mind-numbingly small pieces that only a programmer would understand. More powerful yes....and with power comes complicated user interface. Expect to spend some time studying xprivacy before it becomes useful