People love to threaten that they are going to sue another for defamation -be if slander (spoken) or libel (in print). The reality however is first, true statements, no matter how bad, are always a defense to a defamation claim. So if you leave a review or post something on FB where you talk all about this contractor and the way they messed things up, but you're just saying what happened, that's not defamation.
Opinion speech is protected by the first amendment, so that generally cannot be defamation. For example, if you were to say something like "Given all the problems and delays and the poor workmanship that was done, resulting in me having to hire a new contractor to fix the problem at thousands of dollars more, I don't think ABC company knows how to remodel a kitchen", well, that is opinion.
That doesn't mean all opinion speech is protected, of course, just because you say "My opinion is..." The U.S. Supreme Court has said that a statement is an opinion that merits protection when it is (1) about a matter of public concern, (2) expressed in a way that makes it hard to prove whether it is true or false, and (3) can't be reasonably interpreted to be a factual statement about someone. (The Supreme Court case is Milkovich v. Lorain Journal Co., 497 U.S. 1 (1990).) Think of for example, a political cartoon - those express an opinion on a matter but no one would take it to be a true statement.
If you were to write something or make a statement to someone where you're complaining about your contractor and then say something like "I swear they acted like they were drunk on the job whenever they were here..." Well, that could be problematic if you don't know for certain that they were, because a person hearing or reading that could assume that hey, maybe they in fact were.
So, as a general rule, yes opinion statements are protected, but you should always be careful as to what you say about a person or business, and stick to facts as much as possible.