Как в куче показано или записано, что, например, класс В наследуется от класса А?
ни как. это записано в тексте программы, а последовательность вызовов строит компилятор
psесли мы в методе Main напишем B b = new B();, то у нас сначала вызовется статический конструктор в классе B, потом статический конструктор в классе A, потом динамический конструктор в классе A, и динамический конструктор класса В. а над статикой не заморачивайтесь вообще, пока хорошенько не поймете что это такое. это не очень понятно на начальных этапах изучения, и это точно не надо учитывать, пока не дойдете до необходимости создания собственных переопределений статических конструкторов
So, как в куче помечено, что класс B унаследован от класса А?
это настолько нюанс, что вспомнить сложно даже если надо. когда вы создаете объект - в куче выделяется место под структуру данных. В ней записана метаинформация (гуглить по EEClass) и потом идет таблица с адресами методов. Вот вам куда-то в кишки EEClass залазить надо, в оф. документации точно было детальное описание.

вот можно начать отсюда https://docs.microsoft.com/en-us/archive/msdn-maga...

Почему это происходит? 
потому что-то конструктор класса А может инициализировать поля которые потом нужны конструктору класса B.