Oh there so much to do in your first "Convert your logo image to .ico format" step. What resolution to use, what format to use (RGB, index, etc..), keeping transparency, supporting multiple resolutions for hidpi screens, but keeping good quality for when icon needs to be displayed in smaller size, keeping small .ico size, etc...
.ico files can contain raw RGB data or indexed palette (just like bmp). Latter can produce smaller output if your icon doesn't have many different colors. .ico file also supports embedding .png files, which gives even smaller result than .bmp/.ico format.
I have not found good utility that does all this with good quality. Currently I use short python script that takes 32-bit RGBA png images as input and creates one multi-resolution .ico file. Because inputs I use are png images, the output is smaller than storing raw RGBA bytes in .ico file. Script is here: https://git.handmade.network/snippets/18
To use it, run
images2ico.py -o out.ico in1.png in2.png in3.png
I typically use 5 icons - 16x16, 32x32, 64x64, 128x128 and 256x256 (this last one is probably overkill, but whatever). Example of such icon is here
. Only 77KB. Not bad, considering raw 32-bit RGBA 256x256 icon would be whole 256KB.
If size is an issue, especially when if you are creating tiny "handmade" style executables, then I keep only 16x16, 32x32, 48x48 and 64x64 sizes. Example of such icon is here
. Only 1.3 KB. Full 64x64x4 icon would be 16KB.
Keeping smaller sizes explictly allows to create good looking quality in places where Windows uses smaller icon sizes, like window titlebar, Explorer list-view or similar. Default Windows resizing algorithm which it uses to get smaller icon from large icon is pretty bad.
Before using it on png files, I strip png files of any other unneeded extra metadata (comments, tags, etc...), to reduce final size. I use "pngcrush --brute -c 6 -d output_folder -rem alla input.png" or "optipng -dir output_folder -strip all -o7 input.png". Whatever gives smaller output.
More info on Window icons you can read here