Okay, sure. Be ready for a wall of text, though.
First off, here's the actual description of glBlendFunc in the OpenGL API:
http://www.opengl.org/sdk/docs/man/xhtml/glBlendFunc.xml. It's deeper and more accurate than I can hope to be, but I'll try to give a brief, less complex explanation on the side.
For all this to work, you need to have alpha blending enabled (so
don't call glDisable(GL_BLEND). Alpha blending controls how two pixels blend, given a particular color and alpha value for each.
When OpenGL tries to render something, it has a set of incoming pixels (the Source) that will in some way write over what is already there (the Destination). So, if you have a partially rendered scene and want to draw onto it, the current image that is rendered is the Destination, and the quad that you are drawing is the source. After the render, the Destination has been altered.
The manner in which the Source pixels affects the Destination is controllable. I believe that you can use shaders to customize this effect, but OpenGL has some built-in functions which already give you a good deal of control (most likely, more than enough for your purposes). These built-in blending functions are accessed through
glBlendFunc(int src_factor, int dst_factor). This method defines how the pixels are blended. Basically, the red, blue, green, and alpha values for the Source and Destination pixels are multiplied by their respective values. The OpenGL API provides excellent descriptions about how the possible values for these function.
The default value for blending is "replacement" blending - alpha values are ignored, and colors simply replace one another. Instead, at the very beginning of your game, call this:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
This functions similarly to replacement blending, but allows the alpha channel to moderate the affect.
IN YOUR CASE:After the font has been rendered, the texture that contains its character data is still bound, and that bound texture is affecting everything you draw. Because characters tend to not hit the edges of their bounding rectangles, the vertex is actually on a completely transparent position of the texture, so everything you draw has an alpha value of 0.
No problem, right? You never changed your blending function, so what do you care? Wrong! I believe Slick automatically enforces the blending function that will work properly with the text it's trying to render, so all of a sudden you're using alpha during blending, but everything is at 0, so not a single thing gets rendered (except for your font, which uses its texture properly). Thus, your initial bug.
What you do when you call glDisable(GL_BLEND) is you turn off alpha blending. Basically, this forces the graphics card to constantly use the replacement blending I mentioned before, so, once again, your alpha level of 0 is ignored. But, you want alpha, so instead you want to call glBindTexture(GL_TEXTURE_2D, 0) like I said. This will get unbind that texture that is causing the alpha problem.
Really, once your blending mode is set, simply render a quad with a transparent color and it will work as you want.