I think the most urgent part is "counting and displaying scores". You should have a look at src/modes/soccer_world.cpp and src/modes/soccer_world.hpp
SoccerWorld::onCheckGoalTriggered() is where we detect a goal happened. We have to teleport the ball back at the center of the field, count points for the team (see RemoteKartInfo::m_soccer_team) and display them.
Besides, one should also check why the goal cage in the only soccer field there is for now has this weird appearance (invisible from the inside, black from the outside), I suspect the UV coordinates, but really not sure.