Assuming that code goes in a function, that declares 2 objects on the stack(an object of type Object, and one of type pointer to Object), and one on the heap (of type Object). It also declares two variables, that denote the two stack objects. So obj and obj1 are variables, that denote specific and different stack objects.
Contrast that example with this:
This declares just one object, but two variables. The second line declares a reference to the first object, which makes it not an object declaration; it technically doesn't declare anything on the stack. obj and obj1 refer to the same object.
I say it technically doesn't declare on the stack, because it can be useful to think of a reference as syntax for a restricted kind of pointer. From that point of view, obj1 implies the declaration of a pointer object. So two stack objects are created, but any use of the second variable will access the object represented by obj. Also, under this view, the second object (the pointer) is surely optimized out when compiled.
Either way of describing this code is consistent with the behavior of C++, and won't mislead, but the former is the wording used by the standard, and therefore technically more correct. I hope I'm not confusing the issue by explaining thoroughly. If this and the previous paragraph confuse more than help, they can be jointly ignored.
No. That's just a different syntax for variable declarations.