As you point out, matrices are simply a way of writing down certain kinds of functions. Here you're dealing with the function that sends a point $(x, y)$ to its image under a rotation. Since the new coordinates are simply the old ones, multiplied by coefficients and added together, we can specify the function just by specifying the coefficients. A table is a then a convenient way to write them down.
There's really not much more to it, it's just a convenient shorthand.
You might understand it better by noting that it's not like this is just something we do for rotations. We do it for any linear function, which is a function in which we map several input values to several output values by multiplying the inputs by certain coefficients and adding them together. Again, any such function can be determined just by knowing the coefficients, so a shorthand form for writing the function down is to just write the coefficients in a table. That is, let's say we have a function given by:
$$\begin{align}
\text{newX} = a\cdot\text{oldX} + b\cdot\text{oldY} \\
\text{newY} = c\cdot\text{oldX} + d\cdot\text{oldY}
\end{align}$$
The only information we need to specify this function is the numbers $a, b, c$ and $d$, so we can represent this function with the matrix $\bigl(\begin{smallmatrix}a&b\\ c&d\end{smallmatrix} \bigr)$. And similarly for more than $2$ inputs/outputs.
The question is: why are linear functions important enough to deserve a special shorthand notation? It's because of where they fit this Venn diagram:

Linear functions are common, they occur frequently in applications, which isn't too surprising, given that "multiply by coefficients and then add" is a pretty simple type of rule. They are simple, it's very easy to calculate with them and solve problems involving them. And they are mathematically rich, there's a lot to say about them, many interesting mathematical phenomena emerge from linear functions.
Now, if you're using a graphics framework such as Flash with ActionScript 3, it may require you to rotate graphical objects using code something like this:
rotate = new Matrix(cos, -sin, sin, cos);
sprite.applyMatrix(rotate);
And perhaps you're wondering why it's not just:
sprite.rotate(angle);
(Of course, a lot of frameworks do have functions like the second one, but I suspect that under the hood they're still doing something like the first example).
I suppose this is just to allow you to apply arbitrary linear functions to your sprite, rather than just rotations (such as scalings, skewings, and flips), while maintaining a simple back-end in the graphics engine. This way, if you apply several linear transformations at once, since you're supplying them as matrices, the program can simply combine the matrices into one, and apply all the linear transformations at the same time, which is presumably computationally less expensive.
newX = cos(angle)*oldX-.... – Dan Piponi Jul 04 '14 at 19:13