Reducing internal faces generated by extensive curve extrusion?
There are a few things you can do:

1 Reduce curve resolution - Both in your curves and in your section defining objects



2 Eliminate unnecessary vertex - In straight line segments you don't need all that useless points adding additional geometry



3 Turn Handles to Vector - In straight segments change your handles type to Vector, so no additional subdivisions are created without need.



4 Clean up your sections Eliminate segments for parts that are never seen or end up inside the geometry



5 Use Bezier handles in curved parts wherever possible You can then take advantage of dynamically and easily adjustable resolution using the Resolution setting as shown in the first step, for sections curves too.



6 Use a mirror modifier Use a mirror modifier whenever possible. This will not necessarily reduce polygon count, but it will save you time, guarantee symmetry and save cleanup work (you only need to do half)



As for the self intersecting parts, it's probably more trouble than its worth. You may try using Booleans to intersect them, but you will have to destructively convert to mesh, and the resulting intersections (if they can even be made easily) will likely create more geometry and complexity then they solve.