Что означают предупреждения «unchecked method invocation» и «unchecked conversion»?
Корень проблемы в том, что для обучения вы используете учебник по Java 2, а в сентябре прошлого года вышла Java 9. Между этими версиями прошло больше 15 лет и в языке многое поменялось. В частности в Java 5 появились средства обобщённого программирования и collections framework. С тех пор использование сырых типов не рекомендуется, эту возможность сохранили только для обратной совместимости. Как и старые коллекции, типа Vector. О чём вас компилятор и предупреждает.
У меня, кстати, и так все компилируется и работает.
Предлагаю два варианта решения:
1. Т.к. класс ComplexCompare, похоже, нигде больше не используется (и вряд ли будет) перенести его как анонимный в инициализацию TreeSet:TreeSet<Complex> ts = new TreeSet<>(new Comparator<Complex>() {
            @Override
            public int compare(Complex o1, Complex o2) {
                double re1 = o1.getRe(), im1 = o1.getIm();   //Все это можно упростить.
                double re2 = o2.getRe(), im2 = o2.getIm();
                if (re1 != re2) return (int)(re1 - re2);
                else if (im1 != im2) return (int)(im1 - im2);
                else return 0;
            }
        });
2. Сделать класс Complex implements Comparable и добавить соответствующий метод compareTo с аналогичным кодом: тогда и компараторы дополнительные не потребуются.