Aight, there are a few tricks you should know about that will help you greatly.
1. There is a function called 'Edge Angles' in the Editing Buttons (F9) view, in the 'Mesh Tools More' box. What you need to do is make a duplicate of the vertices creating the corner you want to align to, scale it by zero along the axis you are viewing it from (assuming you're looking down either the x or y axis). Then, make a face from these new vertices and turn edge angles on. This will give you the angle of the corner. But, what if there isn't an edge of this face parallel to a global axis? Then delete one vertice, select the center vertex of the corner you're attempting to measure, press e and extrude constrained to a global axis. Then repeat. This will give you the proper angle.
2. Select the face you wish to align to, press shift+v, and select top. You will now be staring straight down at the face. Press shift+s to bring up the snap menu, and snap cursor to active. Then, go to object mode, select the object you wish to snap, press shift+s again, and snap active to cursor. Your surface detail will now be centered at the face median point. Go ahead, select view front or side (whichever is relevant) and rotate until it looks about parallel, or with step 1 complete, press n and enter the angle value you got into the Rot<axisname> field in the transform properties box. <axisname> is the name of whatever axis you were looking down at the time you took the angle measurements. For increased control, in editmode, in the header of the 3D window, find the dropdown menu that says 'global.' If you set it to anything else, you change the axes about which the transform widget will act, and can use this to make adjusting the location of the detail piece easier by setting it to local. When you grab or scale and wish to constrain to the widget, press the axis to constrain about twice, and it'll switch from global axises to the axises defined by the widget (global, local, normal, view).
I hope these two bits help you out.