How to analyze the Steiner tree problem?
Short answer:  You are given a graph with some special vertices, and are asked to connected them using as few (or cheap) edges as possible.  By connecting them, we mean that you will use only those edges.

More formally, you are given a graph $G = (V,E)$ and a set $S \subseteq V$ of vertices.  These vertices are often refered to as terminals.  You are also given some number $k \in \mathbb{N}$.

I ask you now:  Can you find a set of edges $F \subseteq E$ such that (a) $|F| \leq k$ and (b) in the graph $G' = (V, F)$, $S$ belongs to the same connected component.

Now, if such a set $F$ exists and you take a subset minimal $F'$, the graph $G' = (V,F')$ is a forest, and the component containing $S$ is called a Steiner tree.

This is the unweighted decision version.  It is not hard to come up with the optimization or weighted version.  The weights are on the edges.

Edit:  When it comes to your next question, I would go for Vertex Cover.  Hint: Subdivide every edge and make the new vertices the terminals.  Then the number of edges in a Steiner tree is some function of the $E$ and the number of vertices in the vertex cover in the original graph.

And to show that the problem is in NP should be quite easy.