I suggest using a service like Skype to call Italy (or anywhere in the world) from your computer for just 2.4¢ per minute. (That's the cost to dial a land line anywhere; calls to other Skype users are free.
In fact, I use Skype and my laptop to make free video calls back home from WiFi hotspots around the world, which has been a lifesaver, especially now that I have a young son; now we can see and talk to each other almost every day, even when Daddy is over in Italy working.) » more
Yes, for decades there was a weird rule about dropping the initial zero on the city code when calling from abroad, and dropping the city code when dialing from within that city, but all that changed in Italy years ago.
Technically, there are no longer any "city codes" in Italy (even if all numbers in say, Rome, do still start—at least for now—with what used to be the separate city code of 06).
Now you dial all the numbers, initial zero included, no matter where you are (though if you're already in Italy, you do drop the 39 country code). Think of it as just like the "plus-ten" dialing revolution in many U.S. metropolitan areas, where you now have to dial the area code even if you live within that area code.
Italian land line vs. mobile numbers
Italian land line numbers all start with a "0" (06 for Rome, 055 for Florence, 02 for Milan, 041 for Venice, etc.).
If you see a number that starts with a 338, 339, 439, or any other trio of non-zero numbers, that's an Italian cell phone number.
Be careful: your long distance provider may charge different (i.e. much, much higher) rates for calling a cell phone abroad.
Toll-free numbers in Italy now start with an "800." The good news is that these calls are free within Italy. The bad news is that there's no way to call these 800-numbers from outside Italy.