Ну это классика. В большинстве встречается 6 стандартных приемов выравнивания. Самый простой, на мой взгляд, это Flex-box и display:table-cell. Также можно с помощью position: absolute и relative. Ну и еще можно использовать плавающий контейнер.
Никак, прозрачность наследуется дочерними элементами. Если нужна прозрачная заливка, то можно сделать небольшую картинку нужной прозрачности и поставить ее на background.
Но иконка будет тоже прозрачной. Чтобы это устранить нужно сделать картинку нужной прозрачности и фоном добавить к блоку. По умолчанию скрывающейся блок display: none, а чтобы появился пишем это .img-block:hover .hover-block{
display: block;
}
Ну и добавить время,чтобы это было плавно.