What is the difference betweeen something like this
friend Circle copy(const Circle &);
and something like this
friend
One refers to the parameter the other to the function.
Circle copy(const Circle &);
This means that the parameter passed in cannot be changed within the function
Circle copy(Circle&) const;
The const qualified function is used for member functions and means you cannot change the data members of the object itself. The example you posted was nonsensical.
If we rewrite the first function as Circle copy(Circle const&);, which means the same thing, it becomes clear that reading right to left becomes useful. copy is a function that takes a const reference to a Circle object and returns a Circle object by reference.