Absolutely. Cesium supports a number of formats out of the box for loading external data. Which one you use is totally up to you. For static data like you describe any of them will work, so use whatever you’re most comfortable with. That being said, CZML or GeoJSON/TopoJSON are more web-friendly, so I would recommend them over KML if your data isn’t already in KML format. There are tons of converters out there that go from shapefiles to GeoJSON if you want to do some quick experimentation. The out of the box functionality of the Viewer widget automatically does 100% of what you describe, so it should just be a matter of customization based on your exact use cases.
If you also need to create some of the points programatically, or want to customize visualization after loading, you will want to learn about the Entity API. This is a good tutorial to get started with: http://cesiumjs.org/2015/02/02/Visualizing-Spatial-Data/