Without seeing your code, the best you’ll get is general suggestions. With that in mind…
Where (or when) are you loading your Javascript? Is it being loaded before the HTML body renders, or after?
What are the formats or sizes of your resources? Have you compressed your images and sized them appropriately?
If you are loading multiple icon images (or other small “sprite” style images), are you placing them each in separate files, or are they all being loaded in a single file one time and shared via CSS?
There are numerous tricks and hacks to optimize site load times, googling something like “how can I optimize initial site render?” might be a useful starting point.
Some JS will always be render-blocking because it needs to load before the page. I believe Google Analytics for example is placed right after the head element before the page content.
I will say the First Contentful Paint time is quite slow. But there may not be much you can do about it if it’s for example a WordPress site running on a shared hosting solution. I would look into caching and CDNs. But if it is a WordPress site that is mainly done through plugins (or whatever options your provider has).
As said, without seeing the site or knowing more about what type of site it is and where it is hosted we really can’t say much.
It is what it is. Shared hosted WordPress sites are not known for their speed and WordPress themes are often not helping.
If you look in the dev tools network tab when loading the site what resources are taking the longest to load? If for example, images are taking a long time you can try doing some optimization.
Anyway, I can’t really recommend anything beyond the normal WP optimization and using a theme that isn’t slower than it has to be. You can search for ways of optimizing WP sites and see if you find anything useful. Just be careful what you signup for WP optimization is a very snake oily and spammy scene.
It depends on what type of fonts it is and how they are loaded. Are they Google fonts or fonts added using @font-face?
For @font-face you need font-display: swap
For Google fonts you need to add the &display=swap to the URL, but the URL you get should have that already. I guess it depends how the fonts are added to the page (theme settings or whatnot).