What is "Bra" and "Ket" notation and how does it relate to Hilbert spaces? 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.
 A: What helped me understand it was the notion of bra and ket as vectors in Hilbert space. ket $|f\rangle$ denotes a "usual" vector, bra $\langle x|$ a "transposed" one which can be used for projection. Thus
$$\langle x | f \rangle = f(x)$$
is simply the projection of $f$ into its (coordinate) representation of the $x$. This becomes more clear when you see
$$1 = \int dx\, | x \rangle \langle x |$$
(or a sum if you're projecting on something discrete such as energy niveaus), i.e.
$$ | f \rangle = 1 | f \rangle = \int\,dx |x\rangle \underbrace{\langle x|f\rangle}_{=f(x)} = \int f(x) |x\rangle\, dx.$$
Just compare this to the usual base $\{\vec e_i\}_i$ representation of a vector $\vec a$:
$$\vec a = \sum_i a_i \vec e_i \quad\text{where}\quad a_i = \vec e_i^t \vec a$$
What also helped me a lot was finally understanding where those weird names come from: $\langle x | \hat X | y \rangle$ is a "bracket" composed of "bra" $\langle x|$, "c" $\hat X$ and "ket" $|y\rangle$, where the hat denotes that $\hat X$ is actually a linear operator and the bracket is the respective element of $\hat X$'s "matrix" representation in the coordinate base in this case. This helps understanding the meaning of linear operators by inserting ones again:
$$\hat X = 1\hat X1 = \iint dx\,dy\, |x\rangle \underbrace{\langle x|\hat X|y\rangle}_{=X(x,y)} \langle y|$$
Applying the operator $\hat X$ is now analogous to matrix multiplication as in
$$A = \sum_{i,j}\vec e_i A_{ij} \vec e_j^t \quad\text{thus}\quad \vec a^t A\vec b = \sum_{i,j,k,l} a_i \underbrace{\vec e_i^t\vec e_k}_{=\delta_{ik}} A_{kl} \underbrace{\vec e_l^t \vec e_j}_{=\delta_{lj}} b_j = \sum_{i,j}a_iA_{ij}b_j$$
and analogously
$$\langle x | \hat X | y \rangle = \iint dx\,dy\, X(x,y)$$
since $\langle x|y \rangle = \delta(x-y)$ (or maybe some $\sqrt{2\pi}$ in here, happens in Physics depending on your choice of Fourier Transform...).
A: In short terms, kets are vectors on your Hilbert space, while bras are linear functionals of the kets to the complex plane
$$\left|\psi\right>\in \mathcal{H}$$
\begin{split}
\left<\phi\right|:\mathcal{H} &\to \mathbb{C}\\
\left|\psi\right> &\mapsto \left<\phi\middle|\psi\right>
\end{split}
Due to the Riesz-Frechet theorem, a correspondence can be established between $\mathcal{H}$ and the space of linear functionals where the bras live, thereby the maybe slightly ambiguous notation.
If you want a little more detailed explanation, check out page 39 onwards of Galindo & Pascual: http://www.springer.com/fr/book/9783642838569.
A: 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.
A: I would like to extend Alex' answer, as well as answer your question in the comments: "Is the "bra" basically something like the dot product?"
If you have a vector space $V$ over a field $F$, which is, for now, finite dimensional, you can create another vector space, $V^*$, called the dual space of $V$, which consists of linear functionals defined on $V$. Linear functionals are essentially scalar valued linear maps.
So $$ V^*=\{\omega:V\rightarrow F\ |\ \omega \text{ is linear}\}. $$
As it turns out, if $V$ is $n$-dimensional, so is $V^*$, however you cannot really say anything more than that. BUT, if $V$ is real, and has a scalar product on it, then $V$ and $V^*$ are canonically isomorphic, in the sense that if you have a scalar product $\langle y,x\rangle$, then exists a unique $\omega_y\in V^*$ linear functional such that $$ \omega_y(x)=\langle y,x\rangle ,$$ and if you have a linear functional $\omega$, then there exists a unique $y_\omega\in V$ vector such that $$ \langle y_\omega,x\rangle=\omega(x). $$
In these cases, you can identify linear functionals with vectors and vice versa, and you can take a scalar product to be the action of a linear functional on the vector and vice versa.
What I said above is not true for infinite dimensional vector spaces in general, however, it is true for Hilbert-spaces, as long as you consider continuous linear functionals (in a finite dimensional space, all linear stuff are continous).
I will note that the above is also true for complex vector spaces with the caveat that since the scalar product is sesquilinear, rather than bilinear, the correspondance between the vector space and its dual is not an isomorphism but a conjugate-linear bijection.
With this in mind, in QM, a vector written as $|\psi\rangle$ is an element of a Hilbert space $\mathcal{H}$, a "bra" written as $\langle\psi|$ is an element of the continuous duals space of $\mathcal{H}$, the "bra-ket" written as $\langle\psi|\chi\rangle$ is both the action of $\langle\psi|$ on $|\chi\rangle$ and the scalar product of $|\psi\rangle$ and $|\chi\rangle$, where it is understood that $\langle\psi|$ is the "dual pair" of $|\psi\rangle$ through this conjugate linear bijection between $\mathcal{H}$ and $\mathcal{H}^*$.
A: Often the inner product (also known as a scalar product or dot product) between two vectors is written as $<v,w>$.  The bra and ket notation splits this into two parts,  $<v|$ and $|w>$.  
[In coordinates the "bra" $v$ gets a complex conjugate, so that the inner product is positive.]
Furthermore, for convenience vectors $v$ are often written as $|v>$, to distinguish them from operators or observables.
A: Everything has been explained in detail in the other answers, except some issues involving matrix elements of non-self adjoint operators that students often get wrong when they've just learned this topic. Suppose we have an operator $A$ acting on a ket $|k\rangle$ yielding the ket $|q\rangle$:
$$|q\rangle = A|k\rangle$$ 
Then the bra vectors $\langle q|$ and $\langle k|$ corresponding to the ket vectors $|q\rangle$ and $|k\rangle$, respectively, will be related to each other via a linear operator, the Hermitian conjugate of $A$:
$$\langle q| = \langle k|A^{\dagger}$$
This makes the notation for matrix elements unambiguous. If we write
$$\langle r|A|s\rangle$$
then you can let A act on $|s\rangle$ first and then calculate the inner product. Or you can let $A$ act on $\langle r|$ to obtain some bra vector $\langle r'| = \langle r|A$ and then evaluate $\langle r'|s\rangle$. But note that the ket $|r'\rangle$ conjugate to the bra $\langle r'|$ is then given by $|u'\rangle = A^{\dagger}|u\rangle$. This can be expressed as:
$$\langle r|A|s\rangle^{*} = \langle s|A^{\dagger}|r\rangle$$
A: I would not worry too much at first about distinguishing between "bra" and "ket". What is important is that you have an inner product $\langle x | y \rangle$ which is linear in the second coordinate and conjugate linear in the first, as opposed to the Mathematician's inner product $(x,y)$ which is linear the first coordinate and conjugate linear in the second. Instead of dealing with vectors $x$ and $y$, the Physicists deal with objects $\langle x |$ and $| y\rangle$, which allows them to think of $x$ and $y$ as being fundamentally different in their roles in the inner product. For Mathematicians, x and y are the same.
Well before Dirac's work it was known that the only continuous linear functionals on a Hilbert space have the form $F(x)=(x,y)$ for a unique $y$; this is one of several theorems known as the Riesz Representation Theorem. Mathematicians were coming to understand the importance of separating the space from the dual of linear functionals because of what happens in infinite dimensional spaces. Dirac was aware of this earlier work, and was probably motivated out of this understanding to separate the dual on a Hilbert space from the space. Dirac put vectors on the right of the inner product, seemingly so that traditional notation of operators acting on vectors would be unchanged:
$$
                 Ax \mbox{ vs } A|x\rangle
$$
And he thought of the objects on the left of the inner product as functionals instead of vectors. In principle, one may define the inner product in terms of vectors and dual objects, equipped with some conjugate linear map $* : |x\rangle \rightarrow \langle x |$. This is another way to define an inner product space, and Dirac preferred this over starting with the Mathematicians inner product. The decisions made by Dirac in formulating the inner product left him with a form $\langle y | x \rangle$ that is linear in the second coordinate and conjugate linear in the first. In some ways it's better and in some ways it's worse. Dirac's conventions definitely do a better job of distinguishing between a space and its dual. But the notation is difficult when it comes to distinguishing between a linear operator on vectors and a linear operator on linear functionals because the notation $\langle x|A|y\rangle$ is ambiguous; so you end up with cumbersome notation to fix that, such as $\langle x|A\} y\rangle $ or $\langle x|\{ A|y\rangle$. Ironically, for doing a good job of separating space from dual space, there is a lot of confusion about operators and dual operators. The notation is nice only when dealing with truly selfadjoint operators, not just symmetric.
A: The states of a quantum mechanical system may be represented by vectors from some Hilbert space. These vectors will be ‘Ket Vectors’, and are denoted using the ‘$|~>$ notation. To refer to a particular ket, you place a label inside the delimiters, e.g $|\Psi_a>,~ |\Psi_b>$.
Another set of vectors may be set up, called ‘Bra Vectors’, they correspond in a 1:1 fashion to the ket vectors, and are denoted using the ‘$<~|$' notation. So we might have bras
$<\Psi_a|,~ <\Psi_b|$.
Just as $|\Psi_a>$ might be used to represent a certain physical state of a system so might
$<\Psi_a|$.
As the kets are vectors, they can be added together and also multiplied by complex scalars to form other kets. Their behaviour obeys all the axioms of a vector space.
The bra vectors behave similarly.
I am now going to present a concrete example, consisting of a triad of vector spaces, a Hilbert space of ket vectors, called $V$ it’s dual space $V^*$,which contains ‘Linear Functionals’ (LF’s), and also the space of bra vectors associated with $V$ called $V_{Bra}$.
The kets in this example, might be used to describe the spin state of an electron, you might have seen them used in discussing a Stern-Gerlach type experiment, where a beam of "electrons", actually Silver atoms, is split.
I write LF’s, with a hat on e.g. ( $\hat{\phi}$ )
\begin{equation*}
 V=\textbf{\{ }| \binom {c_1} {c_2}> = ~ \binom {c_1} {c_2} : ~c_1,c_2\in \mathbb{C}~\textbf{\} }~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\end{equation*}
\begin{equation*}
 V_{Bra}=\textbf{\{ }< ( c_1^*~~~c_2^* )~|= ~ ( c_1^*~~~c_2^* ) : ~c_1,c_2\in \mathbb{C}~\textbf{\} }~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\end{equation*}
\begin{equation*}
 ~~V^*=\textbf{\{ } \hat{\phi}_{< ( c_1^*~~~c_2^* )~|}:\left(\hat{\phi}_{< ( c_1^*~~~c_2^* )~|}\right)  \left(| \binom {c_3} {c_4}> \right)= ~ ( c_1^*~~~c_2^* ) \binom {c_3} {c_4} ; ~c_1,c_2,c_3,c_4\in \mathbb{C}~\textbf{\} }
\end{equation*}
Please note that bra vectors are not linear functionals.
I may expand this answer (24th Mar 2022).
