Get row value inside a subquery
Your subquery is not correlated to the outer query, so it multiplies the rows by the number of rows it returns. Also, in my opinion, using the same table names multiple times without aliases at multiple query levels is bad practice, as it may cause some unexpected "surprises". Your query should be something like this:

SELECT 
  i1.ID_INCIDENCIA AS Incidencia,
  i1.DESCRIPCION,
  s1.FECHA,
  s1.FECHA - Inicio.Fecha AS Dias
FROM
  INCIDENCIA i1,
  SITUACION s1,
  (SELECT i2.ID_INCIDENCIA as Inicio_ID_INCIDENCIA, s2.FECHA AS Fecha 
    FROM SITUACION s2, INCIDENCIA i2
    WHERE s2.ID_ESTADO = '1' AND i2.ID_INCIDENCIA = s2.ID_INCIDENCIA) Inicio
WHERE
  s1.ID_ESTADO = '3' AND
  i1.ID_INCIDENCIA = s1.ID_INCIDENCIA
  AND Inicio.Inicio_ID_INCIDENCIA = i1.ID_INCIDENCIA
ORDER BY
  i1.ID_INCIDENCIA ASC


Added aliases everywhere + ID_INCIDENCIA inside the subquery, so it can be joined to the outer query based on that column.