`fc.next()` is a simple iterator:

<!-- language: lang-py -->

    fc = fiona.open("my.shp")
    first_feature = fc.next()
    second_feature = fc.next()
    ...

Or more simply:

<!-- language: lang-py -->

    for feat in fiona.open("my.shp")
         print feat

The result is a Python dictionary. For example with one result (feat=)

<!-- language: lang-py -->

    {'geometry': {'type': 'Point', 'coordinates': (180627.0, 330190.0)}, 'type': 'Feature', 'id': '154', 'properties': OrderedDict([(u'cadmium', 2.7), (u'copper', 27.0), (u'lead', 124.0), (u'zinc', 375.0), (u'elev', 8.261), (u'dist', 0.0122243), (u'om', 5.5), (u'ffreq', u'3'), (u'soil', u'3'), (u'lime', u'0'), (u'landuse', u'W'), (u'dist.m', 40.0)])}

As all dictionaries in Python, there are keys and values.

<!-- language: lang-py -->

    print feat.keys()
    ['geometry', 'type', 'id', 'properties']

So

<!-- language: lang-py -->

    print feat['id'] #gives the id
    154
    print feat['properties']['cadmium'] # gives the value of the cadmium attribute
    2.7
    print feat['geometry'] # gives the geometry, GeoJSON format
    {'type': 'Point', 'coordinates': (180627.0, 330190.0)}

If you want to transform this geometry in a shapely geometry use the [shape][1] function:

<!-- language: lang-py -->

    print type(feat['geometry'])
    <type 'dict'>
    from shapely.geometry import shape
    print shape(feat['geometry'])
    POINT (180627 330190)
    print type(shape(feat['geometry']))
    <class 'shapely.geometry.point.Point'>

Final 

<!-- language: lang-py -->

     with fiona.open("my.shp") as input:
         for feat in input:
             geom = shape(feat['geometry'])
             id = feat['id']
             cadmium = feat['properties']['cadmium']
             ....



    


  [1]: http://toblerity.org/shapely/manual.html#geointerface