How have you structured your tables? It sound like you should have one table that contains all of the TEAMS and another one containing all of the MATCHES. You should then have a Home Team field and an Away Team field in the MATCHES table. These would both be Link To Another Record fields that link to the TEAMS table.
With this structure you should be able to use Roll Up fields in the TEAMS table to calculate quite a lot of stuff. Generally you want to calculate something like Score Differential as a field in the MATCHES table. You can then use a Roll Up field in the TEAMS table to get the Avg Score Differential.
You should even be able to create a League Table view in the TEAMS table by ordering by Wins, Goal Difference etc.
Something like longest win-streak might be tricky. You’d need (something like) a formula field in the MATCHES table called Win Date that displays the Date if the team won. You would then need a Roll Up field in the TEAMS table with a complex aggregate formula to determine the length of the longest distance between dates in the rolled up array.
Head to Head matchups would require having columns for each team in both tables I think. Sort of like a Matrix. You could end up with a lot of columns.
I haven’t explicitly tried all of these things but I reckon they are do-able. I have created a somewhat similar structure for a cricket team I play for. Some of it will require quite advanced formulae. It should be fun to try though.