This is where I think the App "Tasker" really shines when you learn how to use it. You can setup Profiles that keep data off by default unless you have an App open that uses the internet. Same thing for GPS.
Or you can set it up so that when the Display turns off, data is turned off. When the display turns on -- data is turned on and it synchs.
Although, Tasker is so powerful and customizable, you need to think through the consequences of how you are making your phone act. If the data synchs every time the display turns on and that happens frequently -- you'll drain more battery. So you also need to set up a timestamp or cooldown of some sort to limit how often it synchs.
It's just a matter of saving the timestamp whenever you performed the Task:
Variable Set %MySynchStamp = %TIMES
And then using an IF to check the timestamp before running the Task again:
%TIMES - %MySynchStamp > 1800
In this example, 1800 is the number of seconds that needs to have taken place since the last time you saved the Time. 60 seconds * 30 minutes = 1800 seconds. %TIMES is a system variable I can't chance that provides the Time in seconds. The first step saves the time in a variable I am creating (you can name it anything, I named it MySynchStamp). The second step provides a simple math problem that compares the delay between the current time and the time I saved.
In this way, you could set it up so that the Display On event turns on Data and performs a Synch (but only if it hasn't synched within the last 30 minutes). Otherwise, when the Display is off, both data and synch are off.
I just wanted to provide this example, but there are literally thousands of ways you could configure Tasker for how you use your phone.
-------
Edit: By the way, I bought Tasker for battery life, but I would buy it again for the ability it provides me to lock specific applications. I can hand my kid my phone to play games and he can't go to the Market and install apps accidentally (on purpose) without a code.