ROS is at its core a messaging system for distributed processing nodes. It defines a number of standard message formats for different types of commands and data that typically flow back and forth within a robot, but you are welcome to make up your own message formats if required. ROS does a great job of passing these messages around with very little programming overhead within a single computer or between networked computers.
Where ROS really starts to provide benefits is when you reuse functionality provided by the many other ROS users. Their code is supplied in repositories as "stacks". Other people have developed amazing capabilities for robots that have been "open-sourced" and are relatively easy to add incrementally using the ROS development environment. If you want an autonomous robot rather than a "remote control car" then being able to share other people's code is almost a necessity.
Visit http://www.ros.org/wiki/Robots for some inspiration or possibilities for purchasing a functional robot.
The hard part getting started is writing the interface code between ROS and your specific robot hardware if you are doing something unique. I discussed this in the recent "run erratic_navigation on my robot" question. I know I felt lost at this stage initially. I suggest patiently working through the many tutorials (22) available at ROS/tutorials. Be sure to stop by http://www.ros.org/wiki/AllTutorials for another couple of hundred available tutorials. Then experiment some more using the simulation environment, either Stage (2D)or Gazebo (3D). When you have a good idea of how the messaging system works and understand the most common message types required (cmd_vel, odom, tf, laser) you are ready to write the custom code to interface to your robot to ROS messages.
This takes a lot of patience and persistence to develop a custom robot with enough capability to do Kinect or laser guided navigation (one year of spare time for me). As I mentioned in an earlier posting if you really want to get going quickly, start with a pre-configured ROS robot like the Turtlebot or Erratic, or build something close to these so you can use the available open-source software for low-level interfacing. I didn't because I started my robot before these alternatives and ROS were available. I have had the satisfaction of doing it the hard way, but I don't necessarily recommend it as the best way to get started with ROS.
There may be some Arduino interfacing code already available that someone else can point to.
With further consideration I can add a few more points. Despite all of the tutorials I mentioned, none of them directly answer your question. There is not a simple path to controlling a few motors based on some simple sensor inputs like with Lego Mindstorms. ROS does offer the real possibility of developing a robot that can navigate to your fridge, get a beer and bring it back to you or fold your laundry, because these ... (more)