They improve routing for several reasons:
Number one is that by moving the options out of the basic IP header, the IPv6 header is a fixed-length header of 40 bytes. 32 bytes are used for source and destination IPv6 address so only 8 bytes of general header information remain. This makes routing much faster than with the variable length IPv4 header.
Fragmentation fields are now not part of the IP header anymore, fragmentation is done with one of the extension headers, the fragment header, and routers do not fragment anymore. This makes routing more efficient.
Extension headers are only inserted into packets when needed. So for instance when a source host decides that the packet needs to be fragemented (because a router sent a packet too big message), it will insert a fragementation header. If there are no options, no extension header is inserted into the packet.
Hope this helps,. thanks, Silvia