This is my first semester of quantum mechanics and higher mathematics and I am completely lost. I have tried to find help at my university, browsed similar questions on this site, looked at my textbook (Griffiths) and read countless of pdf's on the web but for some reason I am just not getting it.
Can someone explain to me, in the simplest terms possible, what this "Bra" and "Ket" (Dirac) notation is, why it is so important in quantum mechanics and how it relates to Hilbert spaces? I would be infinitely grateful for an explanation that would actually help me understand this.
Edit 1: I want to thank everyone for the amazing answers I have received so far. Unfortunately I am still on the road and unable to properly read some of the replies on my phone. When I get home I will read and respond to all of the replies and accept an answer.
Edit 2: I just got home and had a chance to read and re-read all of the answers. I want to thank everyone again for the amazing help over the past few days. All individual answers were great. However, the combination of all answers is what really helped me understand bra-ket notation. For that reason I cannot really single out and accept a "best answer". Since I have to accept an answer, I will use a random number generator and accept a random answer. For anyone returning to this question at a later time: Please read all the answers! All of them are amazing.
First, the $bra$c$ket$ notation is simply a convenience invented to greatly simplify, and abstractify the mathematical manipulations being done in quantum mechanics. It is easiest to begin explaining the abstract vector we call the "ket". The ket-vector $|\psi\rangle $ is an abstract vector, it has a certain "size" or "dimension", but without specifying what coordinate system we are in (i.e. the basis), all we know is that the vector $\psi$ exists. Once we want to write down the components of $\psi,$ we can specify a basis and see the projection of $\psi$ onto each of the basis vectors. In other words, if $|\psi\rangle$ is a 3D vector, we can represent it in the standard basis $\{e_1,e_2,e_3\}$ as $\psi = \langle e_1|\psi\rangle |e_1\rangle + \langle e_2|\psi\rangle|e_2\rangle + \langle e_3|\psi\rangle|e_3\rangle,$ where you notice that the $\langle e_i|\psi\rangle$ is simply the coefficient of the projection in the $|e_i\rangle$ direction.
If $|\psi\rangle $ lives in a function space (a Hilbert space is the type of function space used in QM - because we need the notion of an inner product and completeness), then one could abstractly measure the coefficient of $\psi$ at any given point by dotting $\langle x | \psi \rangle = \psi(x)$, treating each point $x$ as its own coordinate or its own basis vector in the function space. But what if we dont use the position basis? Say we want the momentum-frequency-fourier basis representation? Simple, we have an abstract ket vector, how do we determine its representation in a new basis? $\langle p | \psi \rangle = \hat{\psi}(p)$ where $\hat{\psi}$ is the fourier transform of $\psi(x)$ and $|p\rangle$ are the basis vectors of fourier-space. So hopefully this gives a good idea of what a ket-vector is - just an abstract vector waiting to be represented in some basis.
The "bra" vector... not the most intuitive concept at first, assuming you don't have much background in functional analysis. Mathematically, the previous answers discuss how the bra-vector is a linear functional that lives in the dual hilbert space... all gibberish to most people just starting to learn this material. The finite dimensional case is the easiest place to begin. Ket vectors are vertical $n\times 1$ matrices, where $n$ is the dimension of the space. Bra vectors are $1 \times n$ horizontal matrices. We "identify" the ket vector $|a\rangle = (1,2,3)^T$ with the bra vector $\langle a| = (1,2,3),$ although they are not strictly speaking "the same vector," one does correspond to the other in an obvious way. Then, if we define $\langle a | a \rangle \equiv a \cdot a \in \mathbb{R}$ in the finite dimensional case, we see that $\langle a |$ acts on the ket vector $|a\rangle$ to produce a real (complex) number. This is exactly what we call a "linear functional". So we see that maybe it would be reasonable to define a whole new space of these horizontal vectors (call it the dual space), keeping in mind that each of these vectors in the dual space has the property that when it acts on a ket vector, it produces a real (complex) number via the dot product.
Finally, we are left with the infinite dimensional case. We now have the motivation to define the space of all bra-vectors $\langle \psi |$ as the space of all functions such that when you give another function as an input, it produces a real (complex) number. There are many beautiful theorems by Riesz and others that establish existence and uniqueness of this space of elements and their representation in a Hilbert space, but foregoing that discussion, the intuitive thing to do is to say that bra $\langle \phi |$ will be very loosely defined as the function $\phi^*$, and that when you give the input function $\psi(x),$ the symbol means $\langle \phi | \psi\rangle = \int \phi^*\psi \; dx \in \mathbb{R},$ hence $\phi$ is in the dual space, and it acts on a ket-vector in the Hilbert space to produce a real number. If anything needs clarification, just ask. Its a worthwhile notation to master, whether a mathematician or physicist.