Some of my code wouldn't really fit the ES_test branch as I'm working on my own game engine and Horde3D is a component of it, so the porting code is somewhat specific to it (aka a bit too messy for Horde's standards right now, but give me time). I'll post some stuff I've got into a tarball, but my end goal is to host a bitbucket repository with Android, iOS and N900 support.
The android/JNI issue is somewhat eclipsed by the use of Nvidia's sample wrapper, they've made a really nice event API which works a lot like SDL/GLFW for C code, and Nvidia's APK file lib is very similar to PhysFS, which I'm currently using for the iOS/N900 support.
The current limitations between Horde3D on the desktop (which is OpenGL 2.1 with some extensions) compared to OpenGL ES 2.0 is that there's no hardware occlusion query support, multiple render targets don't work either which means the deferred pipeline won't work (no ARB_draw_buffers, however Tegra 2 on android has it so it should be fine and I have detection code for this), shadowmaps don't work on N900 due to no OES_depth_texture but it seems to be exposed on iOS at least but it might be too slow, I haven't tested yet. Horde by default expects up to 16 textures to sample in a shader but most ES 2.0 hardware only exposes 8. There's also minor stuff like anisotropic might not be on all platforms/hardware and there's no sRGB support. On the bright side, it does support the PVR container which desktop horde doesn't!
Currently I have stubs to load ETC1 and ATITC/3Dc formats but their mip-map calculation code isn't tested/correct, and the PVR file format can contain ETC1, DXT1, RGBA8, RGB565, RGBA4, RGBA5551, among many others not just PVRTC2 & 4 but as far as I know it cannot contain ATITC/3Dc without making your own custom header info and tool to compose it. Another idea is to support the KTX format that's pushed by khronos which should be superior to DDS/PVR. My approach once I get to this stage is to just have different data packs for different platforms, by using PhysFS or Nvidia's APK mounting which appends to the directory tree in a nice way like pak patch/mod files for Quake 3 (eg. if( POWERVR ) mount("textures_pvr.zip"); or whatever ).
Ok I really want to focus on getting something to appear for iOS right now but after I will add what I've got so far, stay tuned!