The spiral for the drive pinion is called a "helix", and if it has dirt, rust, or grease on it the pinion can't easily spin into engagement. When did the problem start, or when did the starter last work fine?
The bolt for the drive spring may have fallen out because someone didn't properly lock it in place with the tab on the lock washer.
Either way, I'd remove the starter and have a look.