In the first example -
int* Bar;
Pointers points to an object. The job of the compiler is to assign memory( i.e., 4 Bytes) for the integer pointer Bar to hold an integer variable's address. However, to the location it points to must be specified in order to dereference.
It's more like, a Bank giving you an account. Just having a bank account doesn't mean that you can draw money from an ATM. Your account should have money to be able to draw. Transaction fails if you don't have money and in programming paradigm the behavior is undefined. So, your first example behavior is undefined. If my analogy is too awkward, I am sorry.
In the second example -
int* Bar = new int[1] ; // Here [1] is unnecessary as your Bar points to a single integer memory location.
Here, Baris a pointer pointing to a valid integer's location got from the free store. So, the location the Bar pointing to may have garbage values. So, intialize it, before dereferencing. i.e.,
*Bar = 10;
*Bar *= 10;
In second example, since you are managing resources, so its your responsibility to return the sources back to the free store.