If I have a pointer ptr1 used to create a dynamic array
A pointer does not create an array, it merely points at a memory location, nothing more.  But a pointer can point at a memory block that is holding the content of an array, yes.
[If] I delete that pointer before deleting the array itself i.e use delete ptr1 instead of delete[] ptr1, will the array automatically be deleted?
Not correctly, no.  If you allocate the array with new[] and then try to free it with delete instead of delete[], that is undefined behavior.  You must match new with delete, and new[] with delete[].
And, if I have another pointer ptr2 having the same value as ptr1, after deleting ptr1, can I still access the array that ptr1 pointed to using ptr2?
No.  The memory block that both pointers are pointing at is no longer valid once delete/[] touches it.  You cannot use either pointer anymore, unless you first reassign them to point at valid memory, or set them to nullptr.
For me, when I try to output the array using ptr2 after deleting ptr1, it displays garbage values instead of the values of the array.
Correct, because you are trying to access invalid memory.