I believe there are 3 valid methods of incorporating custom fonts:
- put a link to them in the header
- enqueue them in functions.php
- add them with @font-face in style.css
Which is the best way to do it? Is any method loading faster than the other?
Depends on the source. If they are locally hosted, then they should be in the CSS files using @font-face. If they come from a service like Adobe Type Kit or Google Fonts, then they have to be enqueued in the functions.php to go into the wp_head() function.
Edit: I forgot to mention that there are some plugins that can handle this for you. I personally use Type Kit and I have seen WordPress plugins where you simply enter in the kit ID Adobe gives you and it takes care of insertion.