You need at a minimum of 2 textures at all times. A source and a destination. If you try to force through somehow(I don't think OpenGL even permits you to bind the texture rendering to a variable) you will get invalid result as you will be writing over data that you are sampling from. Gaussian blur will be a perfect example of this. You have to sample around the current pixel, if you have the source and destination being the same texture, that means you will be sampling from already blurred pixels. See the problem?
Baseline, what you want to do is both not allowed by OpenGL or DirectX and if it were even allowed you would get invalid result.
So that's why you have a source texture that you sample pixels from and then render to a new destination texture. Then you can alternate between these textures so for the second pass, the destination becomes the source and the previous source becomes the new destination. If you are so inclined on pre-mature optimization and want to minimize the amount of memory used(no matter what, you won't get it to get faster here, only thing you can do is optimize the memory usage) you will still have to have 2 texture at least to render to.
Like Donald Knuth said: "premature optimization is the root of all evil"