asp.net core кроссплатформенный поэтому выбор ОС - это уже дело предпочтения. Хотя если ms sql server, то скорее это все же windows. asp.net core поддерживает ISS и
Kestrel, однако у последнего достаточно ограниченные возможности, поэтому обычно если не хотят использовать ISS, то
ставят NGINX и прописывают маршрут к Kestrel.
Что касается железа, если сайт более менее оптимизирован, то ср. запрос выполняется примерно 100 мс и соответственно на одноядерной машине мы за минуту в ср. сможем обслужить 600 пользователей, если 2 ядра, то уже 1200. Поэтому Вам надо определиться с максимальной пиковой нагрузкой и рассчитать исходя из нее параметры процессора. Далее в asp.net
CORE один запрос в ср. занимает 3 кБ памяти, соответственно, 1000 пользователей уже будут требовать порядка 1 МБ. Этот параметр также зависит от пиковой нагрузки.
* если вы будите использовать asp.net, то память под запрос будет порядка 20 кБ