The first two scenarios below would seem to point to a external wiring issue (i.e. the starter is getting enough juice to pull in the solenoid and engage the flywheel but it is starved for enough amperage to turn the engine over)
Every so often it will not turn over, but if i roll the truck forward some and let clutch out itll move engine some then start up.
A couple of times the starter will turn over stop then wind up
But when I see this - I would have to cast my vote for a bad starter (i.e with internal wiring problems):
or spin not engaging the flywheel and i have to pull the battery cable to stop it
I don't know enough about the design of high-torque mini starters to speak with any authority, but it certainly sounds like the solenoid is hanging up - in both directions.
Remember, in addition to engaging the Bendix/pinion (on the way in) it also closes the big heavy duty contacts that supply the starter windings with full battery current. If it isn't shuttling properly - those contacts either don't close (or more likely, they just barely make contact). Without a good hard face to face connection, the contacts quickly become pitted and that causes the already low amperage - from weak pressure - to get even worse.
I would assume that the Bendix/pinion assembly is also hanging up (on the way back out of the engagement) after the ignition switch is released from the START position. In this case the power across the main contacts is still allowed to reach the starter winding and so the motor continues to spin.
Whatever the case, it would be wise to pull the starter and inspect the flywheel ring gear teeth. It is very likely that they are getting chewed up - and not allowing the pinion to quickly and fully back out. Plus - you don't want to mess up the ring gear. You'll either be looking at changing the flywheel (or be spending a lot of time on your back cleaning them up with a file).
Just my thoughts - I could be way off base.