Assuming you are trying to multiply to random matrices (meaning you don't have any info on the values in the matrix):
The fastest way to multiply two 4*4 matrices is probably the naïve method of multiplying every row of the first matrix with every column of the second. For two 4*4 matrices this comes down to 64 muls and 48 adds.
The time complexity of this algoritm is O(n^3).
There is an algoritm with time complexity O(n^log 7), which is know as Strassen's algoritm.
Because the constant that is hidden in the running time of Strassen's algorithm is larger than the constant factor in the O(n^3) algoritm, Strassen's algoritm is typically only used for large matrices.
It is possible to multiply two matrices in less time than O(n^lg 7). The current upperbound is approxamately O(n^2,376), which is due to a method by Coppersmith and Winograd. ("Matrix multiplication via arithmetic progression.", Journal of Symbolic Computation, 9(3):251-280, 1990)
Most of this information comes from: Introduction to Algorithms, 2nd ed. by Cormen, Leiserson, Rivest and Stein.
This book also has a very clear explantion of Strassen's algorithm.