Как вернуть копию объекта?
За тело конструктора в объявлении конструктора надо съездить автору линейкой по пальцам. Или это C#?
int для индексов объектов - лажа, нужно использовать size_t. Учебники, в которых авторы по привычке лепят int куда ни попадя  - жарить в духовке до готовности. Температура - 451 по Фаренгейту.
Object getMeAnyObject(int i) - такая же лажа, нужно определить константный и неконстантый операторы индекса [].
В целом, попытка использовать list вместо vector - лажа.
По факту - с чего вы вообще взяли, что тут будет какая-то ссылка? Делая присваивание, вы выполняете копирование.
Ах да, еще одна Лажа Петровна:Object o;
  o = oc.getMeAnyObject(1);
Это ведь i like to move it move it!  (два вызова - конструктор и присваивание) форменное. Как насчет
Object o=oc.getMeAnyObject(9000)? Это ведь даже сподвигнет компилятор на RVO и вообще выкинет одно из копирований.
По сути своей два вопроса будут...Object getMeAnyObject(int i)
  {
    return listOfObject.at(i);
  }
Я хочу вернуть копию объекта из контейнера, а не ссылку. Верен ли мой код? 
Верен, если вы правильно расставили теги, и это действительно C++. Правда, в этом случае здесь listOfObject << new Object(); написана какая-то ерунда.
Второго вопроса не увидел.