using magic_quotes_gpc will only protect you if you DO NOT use mysql_real_escape_string. Using both will result in data corruption as things are escaped more than once.
Therefore, if you are confident that throughout your application you're using SQL safely, escaping everything appropriately, you can (and indeed MUST to avoid double-escaping) disable magic_quotes_gpc.
The problem with magic_quotes_gpc is that it will escape things when they come in from the request, even if they aren't going into the database. For example, things sent by email, stored in a file or session etc, may get escaped.
Moreover, under some circumstances (say, storing the value in a hidden field), the same value might logically pass through $_POST (or something else escaped by "magic" quotes) more than once, resulting in it becoming double-escaped (or more).
This is why magic_quotes_gpc is quite flawed.
Also, if you want to do something like validate an email address or some other string, you'll have to do stripslashes() on it, validate it, then add them back in. This is error prone and therefore makes for unmaintainable code, as I'm sure you can imagine.
Mark