The icon is that of the window associated with the taskbar button. So with Application.MainFormOnTaskbar set to True, it's the main form icon. When False it's the icon of the hidden window of Application. So to have different icon on taskbar from main form, you need MainFormOnTaskbar to be False, and assign different icon to Application.Icon. This seems to be the easy way to work around the issue.
If I recall the VCL only sets one size of icon. In my experience it is better to do the job properly yourself and send WM_SETICON messages directly to set both small and large icons.
As for where your icons reside, link them to your executable as resources. I avoid image lists because I lose control of the raw .ico files, but that's perhaps just me being picky. Feel free to use image lists if you like.