How can I order entries by title when each title is numeric?
You can do that using MySQL’s cast() function:

craft.entries.section('mySection').order('cast(title as unsigned)')


Alternatively, you might get better performance if you create an actual Number field called “numberTitle”, attach it to your Entry Type, and set the Entry Type’s title to be dynamically generated using the template “{numberTitle}”. Then you can just order by that field instead:

craft.entries.section('mySection').order('numberTitle')