На сколько я знаю, первый вариант - это для обратной совместимости, так было раньше. Сейчас Class, как правильно сказали наследник от TObject. Для создания используется конструктор: MyObj:= TMyObj.Create(), который можно переопределить. В качестве деструктора переопределяют Destroy, но прямо его не вызывают, а вызывают всегда TMyObj.free
## Код:
```
TMyObj = class(TObject) 
    constructor Create();
    function Foo: boolean;
    destructor Destroy; override;
  end;
  ...
  MyObj:= TMyObj.Create();
  if MyObj.Foo then ...
  MyObj.Free;
```

На счет похожести на записи оберона, не согласен,  и синтаксис другой и значительно более громоздкий и живут только в динамике.
Насчет почитать, даже не знаю много всего, для начала наверно Архангельский подойдет. Много самых разных  материалов на "Корелевстве Делфи"http://delphikingdom.com/