The occurrence of the sound change [f] > [h] > ∅ in modern Spanish words does seem fairly unpredictable. I think this is a situation where dialect mixing and reborrowing/learned re-formation of words caused a lot of complications.
Conditions of the sound change
As far as I know, words that had the cluster /fr/ in Latin never exhibit this sound change. So we see fregar < fricāre, frío < frīgidus.
Words with the cluster /fl/ show in some cases a change to ll word-initially, or ch after [n] (the same outcome as other clusters of a voiceless obstruent + [l], such as [kl] [pl]). Examples:
- llama < flamma
- hinchar (there's also something odd going on with the initial "h", which Wiktionary says is from metathesis) < inflāre
There are also words with [fl], such as flama and flor. Furthermore, Ralph Penny mentions that in lacio < flaccidus, Latin [fl] shows the outcome [l] in modern Spanish (A History of the Spanish Language, 2.5.7), although this seems to be the least common outcome.
Latin did not have words starting with [fj] or [fw]. These sequences mostly developed in Spanish from diphthongization of mid-low vowels *ɛ and *ɔ. Some words show loss of [f] in this context, such as hierro < ferrum, huelga < holgar < follicāre, huesa "grave" < fossa. There are apparently further examples in Old Spanish of words with [f] in Latin being spelled with hie and hue.
words from *fɔ mostly have [fwe], such as fuego < focus, fuelle < follem, fuente < fontem, and others.
words from *fɛ mostly have [fje], such as fiero < ferus. There is also a [fje] word fiel where [je] comes from Latin [iˈdeː].
One of the words you mention, fatal, shows another exception to a Latin to Spanish sound change: the lenition of intervocalic [t] to "d". So it seems reasonable to suppose that this word is a learned/loaned form.
I believe some words show partial influence of Latin forms mixed in with some Latin to Spanish sound changes, but I don't know enough to say what the history of the words forma, fácil, fuerte is.
Something else to keep in mind as a possibility (I'm not sure how frequently it might have been important) is "horizontal" borrowing from another Romance language that did not have [f] > [h] as a regular sound change.
Another note on dialects: I have read that some dialects of Spanish show [h] or a similar sound where Castilian has ∅ or [f]. The pronunciation with [h] may correspond to a spelling variant with the letter "j". For example, jediondo (vs. hediondo) < *foetibundus.
Links to some discussions of this sound change: