se supone que debes de utilizar $contador para poder discriminar las filas, revisa bien lo que estas haciendo:
Código PHP:
<?php
include('ProcesosPHP/conexion.php');
$resultado = @mysql_query("SELECT o.`PERF_CODI`, o.`PERM_CODI`, o.`OPPE_OP1`, o.`OPPE_OP2`, o.`OPPE_OP3`,
o.`OPPE_OP4`, d.`DEPE_DESC`
FROM tnca_oppe o
right JOIN tnca_depe d USING(PERM_CODI)
WHERE `PERF_CODI` = 1 ");
while ($row = mysql_fetch_array($resultado))
{
$contador = $contador + 1; //@maycolalvarez: se supone que contador es la fila????
?>
<tbody>
<tr class="row0">
<td><input type="checkbox" name="opcion[<?php echo $contador; ?>][0]" value="1" /></td>
<td><input type="checkbox" name="opcion[<?php echo $contador; ?>][1]" value="1" /></td>
<td><input type="checkbox" name="opcion[<?php echo $contador; ?>][2]" value="1" /></td>
<td><input type="checkbox" name="opcion[<?php echo $contador; ?>][3]" value="1" /></td>
</tr>
<?php } ?>
</tbody>
<?php
$opcion1 = $_POST['opcion'][1][0]; // fila UNO porque el primer valor tomado de contador es 1 no 0, debido a que lo incrementas antes y no después de crear los inputs
$opcion2 = $_POST['opcion'][1][1];
$opcion3 = $_POST['opcion'][1][2]; //se supone que las columnas no deben repetirse (0,1,2,3) no (0,1,0,1) esto no es una "tabla de la verdad" ¿es una MATRIZ no?
$opcion4 = $_POST['opcion'][1][3];
echo "<br>fila1 opcion1: ".$opcion1 ;
echo "<br>fila1 opcion2: ".$opcion2 ;
echo "<br>fila1 opcion3: ".$opcion3 ;
echo "<br>fila1 opcion4: ".$opcion4 ;
echo "<br>";
var_dump($_POST['opcion'])
?>