I would add to Taka's answer, since the Choi-Effros paper is not widely available online, that the only nontrivial part of the proof is to show the "C$^*$-identity" $\|x\|^2=\|x^*x\|$, associativity, and to check the completeness of $P(A)$. Indeed, the algebra $(P(A),+,\circ)$ is a $*$-algebra, normed with the norm inherited from $A$. For the C$^*$-identity, since $P$ is contractive we have `\[ \|x^*\circ x\|=\|P(x^*x)\|\leq\|x^*x\|=\|x\|^2. \]` On the other hand, since $P$ is cp and contractive, it satisfies the Schwarz inequality $P(x)^*P(x)\leq P(x^*x)$, and so, for any $x\in P(A)$, `\[ \|x^*\circ x\|=\|P(x^*x)\|\geq \|P(x)^*P(x)\|=\|x^*x\|=\|x\|^2. \]` The other thing that needs a small computation is to check for completeness. If $\{x_j\}$ is a Cauchy sequence in $P(A)$, then by the completeness of $A$ the sequence converges to some $x$ in $A$. As $P$ is bounded, $P(x_j)\to P(x)$; but $P(x_j)=x_j$ (since $P$ is a projection and $x_j\in P(A)$) and so $P(x)=x$, that is $x\in P(A)$. So $P(A)$ is closed. The associativity is slightly more involved.