1 px is never a fixed size, like mm or cm, since the pixel's actual size depend on the size of the pixel's on screen. Thus, if two differnt screens both have a height of 20 pixels, where one screen is 10 cm and one is 60 cm and you show a 10px letter, that letter would occupy half the screen height on both screens. On one, that would be a 5cm high letter, while on the other it would be 30 cm.
One good reason to use em (or %), is that em is specified to relate to the currently used font size. Usually, 1em is set to be 16px by default by browsers. I don't actually know if phone browsers still use 16 px or if they handle this differently.
Anyway, what you should do is start by assigning 1em to both html and body (browser differences means you need both)
<style type="text/css">
html
{
font-size: 1em;
}
body
{
font-size: 1em;
}
</style>
This means the browser defines what the default font-size is, which also means the user has control over it, since they can change the defaut font-size. For example, in Firefox, go to Preferences -> Content tab and you can set the exact font-size in pixels (which is then the size of 1 em).
From this point on, you just work with what you deem appropriate for you. If I have a reading disability, or a screen with very small pixels, I increase the base size, and get a corresponding increase everywhere.
Now, starting from the usual 16px font-size, let's say you want to have a base of 12px instead, then you just change the style of the body rule above to 0.75em. On my phone, this is not big enough, so I change my browser font-size settings to "Very Large" (can't set an exact base pixel size in this browser), and it becomes readable again.
Also, don't all phone browsers have zoom these days, which means a font-size which works well on a computer isn't readable in a phone. But on the other hand this gives the user a good overview of the page, which makes it easier to scroll around and then zoom in wherever they want to actually read something.