Is strep the only thing that causes the tonsils to be red?

No. Anything that causes irritation or inflammation of the tonsils can cause them them to be red. Viruses (such as typical cold viruses) are actually a more common cause of "red" tonsils than strep bacteria. Allergies, with mucus dripping down the back of the throat, also causes redness of the throat and tonsils.
No. Tonsil inflammation and redness can occur due to bacterial and/or viral infections. When a person has "strep throat" this refers to a bacterial infection due to a particulat type of streptococcus bacteria. Red tonsils can occur with viral infections too, such as with mono. A throat culture can help determine if the tonsillitis is due to strep.