MESI protocol used with write-back. 2 cores on a single processor, only L1 caches for simplicity.
Why core 1 saved anything in main memory, wasting time - it was anyway almost immediately overwritten?
My sources:
http://upload.wikimedia.org/wikipedia/commons/9/99/MESI_protocol_activity_diagram.png
https://www.cs.utexas.edu/~pingali/CS395T/2009fa/lectures/mesi.pdf
For two reasons:
Keep in mind that this is over-simplified by not having any shared cache. If you had one (and assuming it was inclusive), then core 1 would simply write the modification into it, and core 2 would get it much faster. Other systems may also implement direct core-to-core snoops for such cases.
In general, a protocol should assume none of the sides knows anything other than what the protocol explicitly tells it. You have to invalidate the line out of core 1 to keep coherency (no 2 cores can modify the same line simultaneously), and since you have no other cache level - you have to write it to memory and guarantee that the data is not lost (don't count on core 2 for that, as far as core 1 is concerned it doesn't exist, you're responding to a mysterious snoop with the only flow you trust - writeback to memory).
Last thing - this flow ends (in the slides as well, as far as I could see), with core 2 installing the line in its own cache in M-state, with the modification. From this point on, the system can continue in any way (if the line would later be snooped again, or age out of Core 2's cache - it's a different matter). The flow doesn't require Core 2 to write back the line to memory as you stated, so there's no dual write.