Lo que hace la función INDIRECTO, es traer el valor de la celda que está indicada en la referencia que se puso en la fórmula, por ejemplo para ir desglosando tu fórmula:
Si tenemos estos datos
A B C D
1 Juan C4
2 Ana
3 =INDIRECTO(D1) Pedro
4 Paty
El valor que te va a poner en la celda A3, es Paty, porque le estamos diciendo que tome el valor de la celda C4 (indirectamente). Esto hace Excel va a la celda D1, ahí toma C4, y entonces va a C4 y toma el valor “Paty” y te pone "Paty" en la celda A3.
Lo siguiente que tienes en la fórmula es D$1, con esto le estás diciendo que el valor de fila es fijo y que la columna puede cambiar, si arrastras la fórmula hacia abajo el 1 permanece, si arrastras la fórmula hacia la derecha la letra D cambia por la letra E.
Este símbolo &, sirve para concatenar textos.
Por último esta parte $C5, aquí simplemente le estás diciendo que tome el valor de la celda $C5, que la columna permanezca fija y que las filas puedan cambiar cuando copies o arrastres la fórmula.
Si en la celda C5 tienes el nombre de una hoja, por ejemplo: “Hoja2” y en la celda D$1 tienes un texto, por ejemplo: C4, en la fórmula tendrás esto:
INDIRECTO(Hoja2! D1), con lo cual te va a traer el valor que tengas en la Hoja2 celda C4.