I went with Star printers and attach the drawers through the printers. Star are the least expensive is why I went that route. The downside of attaching the drawer through the printer is that if the printer is out of paper, the drawer won't open. This isn't that big deal as the user should and needs to change the paper anyway. You could still go with star printers and use serial or usb drawers. Star has SDK's that you'll use for printing. I'm sure other printer manufacturers have their own SDK's and would work fine as well. The new Star printers both thermal and dot matrix are drop and load, which is a big benefit when changing paper.
The customer display is usually serial and easily interfaced using a com control with code such as -
First line -
MSComm1.Output = "!#1" & txtUpper.text & Chr(13) & "0x0D"
Second line -
MSComm1.Output = "!#2" & txtLower.text & Chr(13) & "0x0D"
This could also vary on the manufacturer.
Most MSR's emulate keyboards. I accually use USB HID MSR's by Magtek. They have an ocx that is used to run a sub after the card data has changed. I think this route makes more sense from a programming stand point, but if you don't want to attach these to the side yourself and want to use the MSR's specifically designed for the all-in-ones you use, you'll need to program for keyboard emulation.
In my opinion keyboard emulation and serial devices seem quite old but most systems and hardware are designed this way to be compatible with outdated programming practices. I use all usb devices aside from the customer displays which are ussually attached internally in the all-in-ones.
You should plan on selling to more than just your friend, as the time your going to invest in this project would not be worth the return. You also need to think about your credit card processing and get in touch with one and start looking at their SDK.
Tom