My course notes state that $E$ dense in $X$ $\Leftrightarrow$ for each point $p\in X$ and $\epsilon>0$, there exists a point of $E$ in $B(p,\epsilon)$. I would appreciate it some guidance in helping me develop an intuition for dense sets.
Here's my verbal proof: $\Rightarrow X\subset\overline{E}$, so any point $p$ in $X$ is either a point in $E$ or a cluster point of $E$. The first case is trivial ($p$ is already a point in $E$). In the second case, by definition of a cluster point, setting any radius of an open ball centred at $x$ will yield a (different) point in $E$.
$\Leftarrow$ There are two cases: either $p$ is in $E$ or not. The first case is trivial, and $p$ is in $\overline{E}$. In the second case, following the same logic, setting any radius open ball centred at $p$ yields a point of $E$, and by induction, we get infinitely many points of $E$. As such, $p$ is a cluster point and therefore in $\overline{E}$.
I believe that my proof is generally correct, however I welcome anybody with any insightful perspectives or corrections to enlighten me on this notion :)
It seems as though your course notes are taking "$\overline{E} = X$" as the definition of "$E$ is dense in $X$", at least, this seems to be what you're proving, so let's run with it.
Your forward direction ($\Rightarrow$) looks great!
Your backwards direction ($\Leftarrow$) is really close, and you have exactly the right idea! You let $p \in X$, and try to show that $p \in \overline{E}$. First, if $p \in E$, then life is good. It's obviously in $\overline{E}$ since $p \in E \subseteq \overline{E}$. So we're left with the case where $p \not \in E$. Here you say
This is exactly the right idea, but the technique is a bit sloppy. In particular, it's not clear what you're inducting on. What's your base case? Or your inductive case? Remember that (in most books) a cluster point of a set $S \subseteq X$ is a point $q$ so that every neighborhood of $q$ intersects $S \setminus \{ q \}$. This requires us to build a point in $B(q,\epsilon) \cap (S \setminus \{ q \})$ for uncountably many possible choices of $\epsilon$. While there are ways to do this by some kind of induction (for instance, using the fact that each $\epsilon$ is at least $\frac{1}{n}$ for some $n$), it's making things more complicated than they need to be.
Thankfully, we can sidestep this whole induction business by just showing the claim directly!
In our case, we know $p \not \in E$. So then $E \setminus \{ p \} = E$, and we can restate the definition that $p$ is a cluster point of $E$ as: "for every $\epsilon > 0$, we can find a point in $B(p,\epsilon) \cap E$".
But let's look again at our assumption for the right to left direction! Again, quoting from your question:
This assumption is precisely what we need! Since we have it, then, we're done.
Now, to answer the question regarding intuition for dense sets.
We should think of a dense set $E \subseteq X$ as being a set that's "close to every point of $X$". This tells us that we can approximate any element of $X$ by elements of $E$, which might be much nicer!
For example, look at $\mathbb{Q} \subseteq \mathbb{R}$. Every element of $\mathbb{R}$ can be approximated as closely as we like by a rational number. So if we want to prove something is true for all reals (for instance, that $2^{x+y} = 2^x 2^y$) we can prove it first for rationals (which is easier, since we can express $2^\frac{a}{b}$ in terms of repeated multiplication and radicals) then argue by continuity that the claim extends to all of $\mathbb{R}$!
For another, even more impressive example, look at $C^\infty([0,1]) \subseteq C^0([0,1])$. That is, the set of all infinitely differentiable functions $f : [0,1] \to \mathbb{R}$ as a subset of the set of continuous functions $[0,1] \to \mathbb{R}$. At some point in your life you may have heard that most continuous functions aren't even once differentiable, let alone infinitely differentiable! (See here for instance) What this density result tells us is that we can still approximate continuous functions by infinitely differentiable ones, and we can take these approximations to be as good as we like!
Then, if we want to prove something is true for all continuous functions, a very common strategy is to first prove it for infinitely differentiable functions (where we have access to all of calculus to help us!) then argue by continuity that it's true for all continuous functions.
In general, it's a common plan when given a space $X$ to find a dense set of "nice" objects $E$. Then we can (up to approximation) pretend that every element of $X$ is "nice", which helps us prove theorems!
It's worth thinking to yourself how this (extremely useful) notion is related to the geometric/physical notion of "denseness". It should make intuitive sense that the $\mathbb{Q}$ is dense in $\mathbb{R}$, for instance. After all, no matter where you look you can spot infinitely many rationals packed in around any real you like! Do you see how this intuition translates to the mathematical definition of "dense-ness"?
I hope this helps ^_^