It is difficult to say exactly how much battery life is used by specific application. But, you can refer following links which may give you a little idea.
http://www.howtogeek.com/139592/how-to-find-the-root-cause-of-your-android-battery-problems/
Programmatically, you would need to maintain BatteryManager logs for your application in your app itself.
Regarding,battery uses of GPS,network, service, broadcast receivers etc. it depends on how you implement it. Eg:-Use passive providers rather than GPS or network providers also use setinexactrepeating method for alarm manager, etc.