Hi Mutos,
Can't advise on best practice as my experience with HUDs is fairly limited.
I can help try to reduce your confusion over the objects you mentioned.
A Billboard is a surface that always faces the camera and occupies a 3D space, They are great for stuff like lens flare and plants etc.. Because the are in 3D space they have a zorder which means they can appear behind stuff when rendering.
A Rendersurface is only found in memmory. It is doesn't it self get rendered (EDIT: Correction, the scene is a rendersurface that is used to update the screen), however the output can be applied as a texture to other objects (Meshes and billboards). You can fill a rendersurface either by rendering the view from a camera and/or blending textures and/or text etc.. One use for a rendersurface would be to create reflections, the rendersurface is used as a buffer.
Surfaces can be used in a variety of ways including render targets, off-screen rendering, or rendering to textures. An example of off-screen rendering can be seen in the
Water Sample.
2D Texturing As far as I'm aware this is the standard way of providing a GUI or HUD. I'm sure you have already found the
help on the class in the TVDN. Textures and text can be drawn on to a surface. positions of Mouse clicks need to be checked against 'hotspot' rectangles. It's probably a good idea to consider building a UI class that handles the repentitiveness of this (See links below).
If you were wanting to use billboards then you would also need to create a rendersurface as well as some 2D functions. EG, for each ship icon (billboard) you wanted to render, you would need to:
Clear the render surface
Draw the texture of the ship on to the rendersurface
Draw any text you wanted to appear on to the rendersurface
Draw a bounding box on to the rendersurface
Apply the rendersurface texture to the billboard
Position the billboard
You could choose not to use the billboards, in which case you would need to:
Render the texture of the ship to a known screen position
Render any text you wanted to appear to a known screen position
Render a bounding box to a known screen position
Both methods would have advantages / disadvantages. I guess it is whatever best works with the rest of you gui.
Links:
Microsoft explanation of billboardingGamedev GUI Tutorial (Part1)Gamedev GUI Tutorial (Part2)Gamedev GUI Tutorial (Part3)Gamedev GUI Tutorial (Part4)