I will give this a try. If I get something wrong someone will correct me.
int *ip; declares a pointer to store the address of an integer. Knowing the type is useful later on with pointer arithmetic.
ip = newint; stores the address that new creates, since new only returns the address of the memory it sets aside when it is called. Because "ip" was declared as a pointer nothing special is needed to put the address in the variable.
*ip = num;. The * here is the says to dereference the pointer to get to the actual value stored at that particular memory location and then set the value equal to num. The same *ip is used to print the value in a cout statement whereas ip would just print the memory address.