Python is a bit different than vb Rhinoscript, it is an object-oriented language. Whereas in vb Rhinoscript a point is represented by a simple array of three numbers, in Python, a 3dpoint is a type of object. If you simply define a point in Python by a list or tuple [x,y,z] or (x,y,z) it is not recognized as a 3dpoint object by RhinoCommon. rs.coerce3dpoint will take a list or tuple of three numbers - or even the object ID of an existing point object - and return a real Python 3dpoint object.
Most of the Python rhinoscriptsyntax methods actually use coerce3dpoint and other “coerce” methods behind the scenes to make it easier for the user to use simple scripting methods similar to vb Rhinoscript without having to worry too much about the complexities of OOP in Python.