Personally, I see "idiot" as more mean, and "fool" as more general and sort of used in a joking way. But that's just my opinion. By definition alone, they are basically interchangeable.
[Examples of how I feel the "tone" of the words works:
Person A: I really think grass is blue. Just look at it, it's blue!
Person B: Wow, you are truly an idiot.
Person A: Wait, I forgot where I live...
Person B: Haha, you fool.]