a) Image upload will minimally require cooperation between a browser and scripts on your server. Minimally, you'll need an upload form.
b) Offering image editing is much more involved. I haven't seen those 3 items before and therefore cannot comment on them. Let's hope they offer the image editing capabilities you want because writing it all yourself is time-consuming.
c) text composition is tricky for a variety of reasons. one is that you would need to integrate this with the image editing that you hope to obtain from these third-party image editors. another reason is that you have no idea what fonts are installed on someone's browser. you'll either need to i) limit font selection, ii) use something like Flash with embedded fonts, iii) look into embedding fonts in html (i know nothing about this) or iv) set up your image editor to enable text composition.
d) for layout control you either set up templates they can choose from or you offer drag and drop (and stretch and move) functionality.
I once wrote a flash application that allowed the addition of images and text (in a variety of fonts) to a canvas which could be saved. It was pretty involved, but not impossible. It did not offer any image editing capabilities.
As for printing these objects and having them come out the size you want, this depends on how you handle the data/images from your server to the printer. For instance, printing in a browser can result in the browser scaling an image to fit on a single sheet. Printing with photoshop, on the other hand, lets you specify whether to scale the image to fit or not. Printing directly from HTML might work if you specify your dimensions in pixels and set your CSS overflow options to prevent things from getting too large. I would imagine the whole trick in avoiding giant or tiny text output is to give the user an accurate representation of what it is they are going to print. If they upload a tiny image, it should look tiny in your preview. If they upload a huge image, it should clear that the image exceeds the printable area.