HVIF is a vector format like SVG, though it is a much more effcient format. The maximum size by design is 128x128 (I think), at least in terms of rendering as a vector, they could always be scaled up more (with the associated “blurring” of any bitmap scaling process.)
I don’t know off hand if there is a direct way to convert SVG to HVIF though I know some people have done it (maybe just through Wonderbrush or Icon-O-Matic.) I think it is sort of a lossy process because SVG may be able to represent things HVIF cannot. Here is a good article about HVIF written by someone outside the Haiku project if you want to learn more.
So I don’t know if there is a good answer to your first few questions, but I am also interested in icons so I can look into this further. We might need some custom code to convert SVG icons to HVIF in a smarter way.
OK, so assuming you then had a bunch of new HVIF icons how do you update applications? Unfortunately that is also a bit tricky. It was tricky before, but now with our package system it is even more tricky. You see the icons for applications are embedded in them as resources inside the executable. Before we had our package system you could maybe write an application to update the icons in each app by updating the resources. But now most Haiku applications are in hpkg files which are never actually extracted by mounted “virtually”, meaning you can’t really change the applications without actually opening the hpkg file and changing the files inside. This is certainly possible but sort of a pain.
Honestly at this point the easier approach to have a more customized icon set may be to patch Deskbar and Tracker to support SVG icons and a way to override application icons from outside the package system. Though now that I think about it, maybe it can already be done with the MimeTypes preferences…
I am mainly writing all this to educate but as I say if you really want custom icons probably we just need to provide an easier way to override them. It is really just a matter of changing the code which loads an icon so it might be easier then I think.