the reason why the program throws an exception on DataRate is because calling .open() on your accelerometer does not guarantee it is attached at that point. So you need to wait for the device to become attached before sending it commands. you can do this by putting this instead:
Code:
acc2 = New Phidgets.Spatial
acc2.open(123335)
acc2.waitForAttachment()
acc2.DataRate = 30
in regards to your second question, i am actually unsure why you do not need to use the tostring() method on the accelerations, my guess is that VB.Net preprocessors are smart enough to perform the operation automatically if it knows it is being applied to a text field - hence why VB.Net forces you to use or assign properties in any situation