Что означает такая запись: class MyClass; ? объявление существующего класса без реализации
Для компилятора это знак того, что класс полностью объявлен в другом месте этого проекта (например, в соседнем файле).
Так делают, чтобы избежать взаимного включения. Например, у Вас есть файл X.h в котором объявлен класс X и файл Y.h, в котором объявлен класс Y. При этом Вам зачем-то понадобилось использовать класс X в классе Y и наоборот (например, объекты одного класса являются свойствами другого). Тогда, если включить один файл в другой с помощью #include, и со вторым сделать то же самое, компилятор засыплет Вас ошибками, вызванными взаимным включением. И вот именно в такой ситуации используют представленное Вами объявление. Например в классе X, чтобы объявить свойство, являющееся объектом класса Y, можно не писать #include"Y.h", а написать лишь class Y;. Это даст понять компилятору, что класс Y объявлен где-то вне этого файла, и при сборке он обязательно его найдёт.
Возможно это не единственный пример использования такой конструкции. Я просто рассказал то, с чем сам сталкивался на практике.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей