Consider the example file
\hsize=70pt a shelf{}ful firefly
\hsize=70pt shelf{}ful firefly
\end
Upon running TeX on it, we get on the terminal
Overfull \hbox (7.58342pt too wide) in paragraph at lines 1--2
[]\tenrm a shelf-ful fire-|
Overfull \hbox (0.63898pt too wide) in paragraph at lines 3--4
[]\tenrm shelfful fire-|
You can notice that in the second case the symbolic representation is different and the reason is that TeX never tries hyphenation on a word fragment that's not preceded by glue. This restriction is not used in LuaTeX and, indeed, if we run LuaTeX on the same file we get
Overfull \hbox (7.58342pt too wide) in paragraph at lines 1--2
[]\tenrm a shelf-ful fire-|
Overfull \hbox (0.36119pt too wide) in paragraph at lines 3--4
[]\tenrm shelf-ful fire-|
Once the word fragment has been subjected to trial hyphenation, ligatures are reconstituted. The TeXbook indeed recommends to use either the italic correction \/
or another explicit kern, in order to break ligatures. In the case of ff
, \kern0pt
seems best with Computer Modern, but it may not be with another font.