First() will throw an exception if nothing is found.
FirstOrDefault() returns the default value of the Data Type used if nothing is found, for example in case of integer it would be 0, in case of any Reference type like classes or objects it is NULL.
FirstOrDefault() I think it is the equivalent of DefaultIfEmpty(NULL) or DefaultIfEmpty(0) in above examples. It depends on what the LINQ query is supposed to return.