Да, документация устроена дурно - найти нужные вещи трудно. Тем не менее эти нюансы КП описаны - можно посмотреть раздел "Что нового в языке?".
TYPE MyRec = POINTER TO RECORD END
это все равно, что объявить:
## Код:
```
TYPE
  MyRec = POINTER TO MyRecDesc;
  MyRecDesc = RECORD ... END;
```

Однако тогда у пользователя останется возможность использовать тип и статически, что очень часто нежелательно. В частности, указатели мы можем выдавать пользователю "контролируемо", проводя нужную инициализацию. При создании через NEW память обнуляется, при создании в стеке VAR r: MyRecDesc будут обнулены только поля-указатели. В общем, есть веские причины делать некоторые типы только динамическими. Тогда не вводят статический тип вообще, а пишут единственное объявление POINTER TO ABSTRACT RECORD ...

Self-параметр метода должен передаваться либо по ссылке (VAR r: MyRecDesc), либо через указатель (r: MyRec) . Для динамических типов, ясно, можно объявлять методы только вторым способом. А вот для статических типов можно объявить как VAR-методы, так и POINTER-методы. Первые методы можно будет вызывать для любого экземпляра типа - как статического, так и динамического - ведь указатели, передаваемые параметром, неявно разыменовываются.
А вот вторые можно будет вызывать только через указатель, то есть, только для переменных в куче (в КП указатель может указывать только на объект в куче).

Теперь об ABSTRACT. Этот модификатор запрещает создавать любые экземпляры типа. Т.е. от типа можно только наследоваться. Единственное его назначение - описыватьбазовый интерфейссемейства типов.
Для ASBTRACT-записи некоторые процедуры можно реализовать, а можно оставить нереализованными, пометив их также ABSTRACT.

EXTENSIBLE же говорит, что тип может быть расширен в дальнейшем. Но он может использоваться и сам по себе. ABSTRACT-методов у не-ABSTRACT типа быть не может. А вот EMPTY - пожалуйста. Это будет заглушка, которая при вызове ничего не будет делать. Зато в расширенных типах ее можно переопределить, как и EXTENSIBLE.
EMPTY равносильно тому, что написать:
PROCEDURE (t: Type) Proc, EXTENSIBLE;
END;

А у абстрактных типов абстрактными помечают те процедуры, которые расширенный тип (если он тоже не абстрактный)обязанреализовать, иначе компилятор скажет об ошибке. Например, у Views.View метод Restore - абстрактный, и любое отображение обязано его реализовать. А все другие расширяемые методы - либо EXTENSIBLE, либо EMPTY. Мы можем их и не реализовывать.