1.обычно у каждого компилятора свой runtime. Для VC - это разные версии msvcrt.dll.
2.Читайте на сайте разработчика компилятора. В основном это не сильно принципиально, разве что вы используете какие-то специфические плюшки, которые не описаны в стандарте, но есть в конкретном компиляторе и его стандартной библиотеке.
3.runtime - это как правило стандартная библиотека + точка входа и завершения программы (а ваш main вызывается уже из runtime).
4.Можно. Обычно стандартная библиотека поставляется как в виде динамической библиотеки, так и статической. Выбор какую использовать за вами, задается опциями компилятора.
5.Не большой. Но тут лучше говорить не про оверхед, а про "написание программы на чистом" WinAPI/POSIX и других OS API. На сколько это трудозатратней по сравнению с использованием стандартной библиотеки.
По собственному опыту скажу, что написание на чистом WinAPI довольно трудозатратное (и время затратное) занятие, затратнее примерно в 1.5 по сравнению использованием stdlib. Но у меня это был первый и пока единственный опыт, дальше, видимо должно быть проще.