Насчет извлечения иконок нужного размера рекомендую функцию Windows.LoadImage(), сам ей пользовался, выдергивая из библиотеки конкретный вариант иконки. Пользовался ей так:
Код:
var IcoDLL: THandle;
{...}
IcoDLL:=LoadLibrary('icons.dll'); {путь к DLL с иконками}
Image1.Picture.Icon.Handle:=LoadImage(IcoDLL, 'QWERTY', IMAGE_ICON, 256, 256, LR_SHARED);
{здесь QWERTY - название ресурса иконки в DLL (можно посмотреть программой ResHacker), 256 и 256 - требуемые размеры иконки}
По крайней мере, работает в Delphi 7, на более актуальных версиях не проверял.