Ответ 1
Да, текстура2D() устарела как минимум (по крайней мере) OpenGL 3.3; см. стр. 99 3.30 спецификация GLSL. Он будет по-прежнему поддерживаться в профилях совместимости OpenGL, чтобы избежать нарушения существующего кода, но его использование в новом коде сильно не рекомендуется.
EDIT. Детали для OpenGL ES немного отличаются друг от друга, но конечный результат тот же: texture2D() был устарел и заменен текстурой() в OpenGL ES 3.0; см. раздел 8.8 3.0 Спецификация GLSL ES.