Off the top of my head, I don't think that you will get a line string or polgon string of x and y values in csv. I believe that you will only receive point values if you pick csv. You will have a column for x and a column for y.
The gdal libraries that read shapefiles treat the three files as one animal. These libraries already do all the work of reading the three complex file formats, if you include their header files in your project. GeoJSON, GML, and KML would be good intermediate formats for what you are trying to do.
"Import" is the keep word in your question. Depending on your import target, gdal/ogr may have a supporting target database or additional file format. That would save writing code that others have already vetted. Type
on the command line. The formats option will list all the file formats that have been compiled into your version of the gdal/ogr application that you are using. Pre-compiled versions may offer more or less of the available file formats. Also check the version that you are using because new formats are made available from release to release. Again available formats depend on what has been compiled for you.
As far as your as your alignment problems, make sure that you use a spatial reference system or SRS. Use
-x_srs options where x refers to one of the named srs options. This is a safety measure to make sure that you are explicit in the reference system that you expect gdal to use during the conversion. I have heard of enough problems and hair pulling where the SRS options were not explicitly used, that I always use them to avoid that pain and suffering. That being said, there can be some inherit distortion in any conversion that you perform. That however is part of taking values on a round looking ball and trying to make them look the same on a 2d coordinate plane.