Steven
See page 26 of http://www.utasker.com/docs/uTasker/USB_User_Guide.PDF for a diagram of the Endpoint even/odd buffering.
Remember that even and odd entries don't necessarily match with DATA0/1 - the control field defines this, so basically the double buffers are used to allow filling/emptying one while the previous is being processed by the USB controller. [Furthermore, it is possible to modify the buffers used on the fly so one could also use multiple such RAM buffers, although 2 adequate for mayimum full-speed throughput].
DTS enables the controller's data toggle mechanism - it is used by control and bulk endpoints but not isochronous. It causes the controller to respect DATA0/1 togging when sending frames and checking of the correct DATA token on reception.
You can use the uTasker Kinetis simulator to simulate the USB device and see the internal workings of the flags, buffer descriptors, interrupts, etc. in case you want to study exactly how things operate (it will simulate all KL and K parts with USB using VisualStudio and cross compile to all Freescale boards - inkl. FRDM-KL25Z using GCC (without libraries), CW, KDS, IAR, Keil, Atollic, Rowely Crossworks, Green Hills or CooCox).
Regards
Mark
Kinetis: µTasker Kinetis support
KL25: µTasker Kinetis FRDM-KL25Z support / µTasker Kinetis TWR-KL25Z48M support
Composite USB: µTasker USB Device Configuration
USB User's Guide: http://www.utasker.com/docs/uTasker/USB_User_Guide.PDF
For the complete "out-of-the-box" Kinetis experience and faster time to market