Turn off 3G when I've got WIFI on. I only need the mobile networks for phone calls when I've got wifi so I would prefer not to have 3G on.
3G and mobile data are two separate things. When wifi is enabled, mobile data no longer goes through the cellular connection, but it does remain connected to the 3G network (otherwise it couldn't receive calls or SMS/MMS). I know older versions of CyanogenMod included a highly customizable Power Control widget that had options that when wifi is enabled (not necessarily connected), it switches to 2G/EDGE. But there are some downsides with this. Switching from 2G to 3G (and vice versa) require completely losing phone signal as it shuts down the connection and then searches for the other network. In doing this, you are probably looking at at least 30 seconds of being without a signal when this occurs. One very bad thing I can see with this is if you are on a phone call when you enter or leave a wireless network, it will most likely get disconnected and you won't be able to call them back until you are reconnected. In my experience, switching to 2G-only really isn't as big of a battery saver as it was a few years ago. 3G modems have gotten a lot better with power consumption.
Turn off 3G if i'm in a low signal area - I hear if you're on the edge of 3G connectivity, it'll use lots of power constantly connecting to 3G. Does android have a way to stop that from running the battery down or should I create a tasker profile for it?
You can adjust the preferred networks under the Phone Information section, which can be accessed by typing the following into your dialer
*#*#4636#*#* and then going down to the Set Preferred Network Type section. Most likely your phone is on WCMDA Preferred. This seeks out a 3G/HSPA signal and tries to keep it active and only falls back when the signal is really poor. If I remember right, you can set it to GSM/CDMA Auto (PRL) and it will pick the one with the best signal. But I read this a while back and haven't been able to find the reference again.
Power saving mode on when the screen isn't on. There isn't much the phone needs to do when I'm not using it so are there already processes built into android to turn the CPU down etc. or do I need to create a Tasker profile for it? It can chew up to 25% of my battery life overnight sometimes.
Samsung is the only device that I know of that includes a Power Saving Mode. Android is actually pretty good about being easy on the battery, but apps that we install are typically the culprits of our poor battery life. A device should be in Deep Sleep mode well over half the time it is off the charger (I tend to notice mine around 65%-75% Deep Sleep). This can be checked using CPU Stats. Unfortunately, to get more information about what is causing your problems, you most likely need root. The app I typically recommend to people on the CyanogenMod forum is BetterBatteryStats (which is free on xda for memebers). This will actually tell you exactly what in an app is keeping the device from entering deep sleep. This app may still have some functionality without root, but I've never tested it (I always put a custom ROM on my phone, so I am never using it long without root).
Finding out what apps are keeping your phone from entering Android's low power "Deep Sleep" when the screen is off will save you more on battery than Samsung's Power Saving Mode probably could.
As I mentioned above, Android already does a great job with trying to minimize power consumption. All phones support CPU stepping, which basically will lower the speed of your processor in various steps until it enters the deep sleep mode. The range of the processor speeds vary from device and kernel (3rd-party custom kernels can modify quite a bit). When the screen is turned off, Android automatically tries to enter deep sleep mode. The only way this doesn't happen is if something is holding a wakelock. A wakelock is designed to allow an app to finish something before entering the low power state. This could be anything from sending a text message, to being on a phone call, to syncing email. Ideally, these should only hold wakelocks for as long as needed, but occasionally they get buggy. This is where the above app I mention comes into play. It can determine what apps are holding those wakelocks, and if they are excessive, you can check the settings of the app to try and minimize it or try uninstalling/reinstalling the app to see if it is a glitch or corrupted somehow.
The other option comes with rooting and custom kernels. I give this only as general information. With custom kernels, they can significantly change how the processor operates. Everything from lowering the max speed of the processor, to actually sending less voltage to the processor, to severely limiting how high of speed the processor can get while the screen is off. This is part of the reason why a lot of people run custom kernels. The battery savings from undervolting the processor can be quite substantial. Also, when running a custom ROM, you can remove a lot of the bloat that carriers and/or manufacturers add to the ROM, all of which can increase battery consumption.
That being said, if you are noticing certain apps are using a large amount of battery or hold large wakelocks, but they are system apps, with newer versions of Android, you can still disable those apps (even if you can't remove them). You can do this under Settings -> Apps -> All -> App name -> Disable. If you want to reenable it, it can be found at the bottom of the list alphabetized with all other disabled apps (if any).