Which to use: OneToOne vs ForeignKey?
ForeignKey means that you are referencing an element that exists inside of another table.
OneToOne, is a type of ForeignKey in which an element of table1 and table2 are uniquely bound together.
Your favorite fruit example would be OneToMany. Because each person has a unique favorite fruit, but each fruit can have multiple people who list that particular fruit as their favorite. 
A OneToOne relationship may be done with your Car example. Cars.VIN could have a OneToOne relationship with CarInfo.VIN since one car will only ever have one CarInfo associated with it (and vise versa).
My understanding is that OneToOneField is used for just 1 row of data from Table2 (Favorite fruit) linked to one row of data in Table1 (Person's name), and ForeignKey is for multiple rows of data in Table2 (Car models) to 1 row of data in Table1 (Brand/Manufacturer).
My question is what should I use if I have multiple tables but only one row of data from each table that links back to Table1. For example: I have Table1 as "Cars", my other tables are "Insurance Info", "Car Info", "Repair History". Should I use ForeignKey or OneToOne?