Each time you execute an INSERT statement, it creates a new row: if you supply just one column value with the INSERT then all other columns get defaulted - so because you issue six INSERT commands, you get six rows.
The simplest way round this is to pregenerate all the values into SQL variables in your SP, then issue three INSERT commands:
CREATE TABLE #tempRearRight
(OPC INT, PFC INT, BCFC INT)
DECLARE @OPC int = (SELECT COUNT(*) FROM ...);
DECLARE @BCFC int = (SELECT COUNT(*) FROM ...);
INSERT INTO #tempRearRight (opc, bcfc)
VALUES (@OPC, @BCFC);
... change @OPC and @BCFC ...
INSERT INTO #tempRearRight (opc, bcfc)
VALUES (@OPC, @BCFC);
... change @OPC and @BCFC ...
INSERT INTO #tempRearRight (opc, bcfc)
VALUES (@OPC, @BCFC);
SELECT * FROM #tempRearRight
DROP TABLE #tempRearRight