I agree, the forms should be laid out identically. Here's the cognitive work your user has to do:
Identical layouts
- I want to change that text.
- [clicks edit]
- Now I can!
Different layouts
- I want to change that text.
- [clicks edit]
- Wait, where did it go? It was the first name...
- [scans page for "first name" or for the name they wanted to change]
- Okay, there it is.
Signaling editability
I suspect you're considering different layouts to help the user see when the text is editable and when it's not. There are unobtrusive cues that help show when text is editable (typeface, weight, visible input box around it), but their absence isn't so obvious that users can instantly tell the text isn't editable. So, I think you're right that they need something more.
My suggestion is that the read-only page have a small "edit" link next to every field. They can all go to the same edit page. This has a few advantages:
- It's clear that this isn't the edit page
- Users who don't know about / have forgotten the edit feature immediately know it's there
- The user doesn't have to move their mouse, and their attention, down to the edit button and then back up to the text they wanted to change.
Layout
If you go with the vertical layout, you should follow icc97's advice to put the name fields in one column. Also increase the space between the field content and the following line so that it's more obvious that the field groups with the header above and not the one below.
If you go with the horizontal layout, you should get rid of the large space between the field names and the field contents. Also consider right-aligning the field names, though this is a smaller issue.
Printing
If you want a more compact view for printing, you can create a Print button that goes to a print-specific layout or use a print-specific media query. Consistency with the on-screen version is less important unless you expect your users to frequently look back and forth between the screen and the printout.
Personally I would go with layout #2 for both screen and print, but if you want to switch between layout #1 and layout #2 it looks like it would mostly involve changing the field label divs from block
to inline
with a specified width.