Freescale's reference manual certainly leaves a lot to be desired, especially in the USB chapter. There's very little explanation of how the internal state machine works, particularly when it comes to your responsibility in the code to deal with the data toggle bit. But they do at least document the registers and buffer descriptors pretty well.
Writing a USB stack from the register descriptions is tough. I know. I've done it 3 times (2 were earlier stacks for 8 bit non-Freescale chips). You can find my USB stack for Teensyduino, which runs on a Kinetis K20 chip, here:
https://github.com/PaulStoffregen/cores/blob/master/teensy3/usb_dev.c
You can also find an article written by the one person (as far as I know) who's really looked at my code and other USB code and written a beginner oriented article about how Freescale's USB works:
http://kevincuzner.com/2014/12/12/teensy-3-1-bare-metal-writing-a-usb-driver/
These alone will not be nearly enough. USB is a complex protocol. At the very least, you really must read parts of the USB specification. It can be found for free at www.usb.org. Their site changes often, and it's buried inside a huge zip file with tons of other docs. Here's a direct link to just the USB 2.0 spec.
http://www.pjrc.com/teensy/beta/usb20.pdf
If you're not familiar with USB technical details, read chapter 4 and 5 first.
The actual protocol information you need to understand how to use Freescale's USB hardware is mostly in chapter 8. Once you're able to respond to token and send/receive data with the correct toggle bits, chapter 9 has the info about descriptor data and other details of what you need to do to get a PC or Mac to recognize your device.
The state diagrams and flowchart and other stuff you requested is mostly in those chapter of the USB spec.
As a practical matter, bringing up brand new USB code is a huge challenge, even if you're pretty familiar with USB. Freescale's poor documentation of their USB's internal state machine, especially how it handles data toggle, will require quite a lot of fiddling and guesswork. I know, since I've personally done this.
To have any reasonable chance of success, you really must have some sort of USB protocol analyzer, so you can see what's actually happening on the wire as you try things. There are some software only options, which are more appropriate when working with already-good USB stack code and merely fiddling with descriptor data or the contents of packets.
For bringing up your own stack, you really should get a hardware protocol analyzer. Another computer is also very useful for viewing the data. The analyzer I use is the Beagle from Total Phase.
http://www.totalphase.com/protocols/usb/
Again, I want to emphasize the very advanced and difficult nature of writing your own USB code from scratch. It's not impossible. I did it. But I had years of prior experience and very good familiarity with the USB spec, and the Beagle analyzer (and plenty of prior experience using it), but this still took me 1 solid month to really get it working well.
On the plus side, the fact I was able to do so, without any direct contact with anyone inside Freescale for technical questions on their hardware details that are only vaguely explained in the reference manual, shows it can indeed be done. Specifically to your question, there aren't any easy tutorials with nice, beginner-level documentation that has all the answers or even a useful formula for how to structure your code. The documents I linked to are probably the best info you'll find to supplement Freescale's terse reference manual and their USB stack source code.