VM transport and flow references are two methods for chaining flows together in Mule. VM transport creates a transport barrier that serializes and deserializes messages, resulting in overhead. However, VM transport allows for message redelivery configuration in exception handling blocks, which is not possible with flow references. So VM transport should be used over flow references if message redelivery is needed.